如何从Visual Studio导出所有源代码到文本文件

本文关键字:源代码 文本 文件 Visual Studio | 更新日期: 2023-09-27 18:05:19

我有一个相对较大的Visual Studio解决方案。

我需要导出所有的源代码到一个文本文件。我还想在某处包含一个文件名。我该怎么做呢?

例如我有一个类型

namespace MyProject.Core
{
    /// <summary>
    ///   Enumerates possible record status
    /// </summary>
    public enum RecordType
    {
        NonWearTime = 0,
        WearTime = 1,
        NotClassified = 2
    }
}

我想把它转到output.txt文件(或任何其他文本格式),看起来像这样

//***********************************
//Filename: RecordType.cs
//***********************************
namespace MyProject.Core
{
    /// <summary>
    ///   Enumerates possible record status
    /// </summary>
    public enum RecordType
    {
        NonWearTime = 0,
        WearTime = 1,
        NotClassified = 2
    }
}

所有其他类型应该只是附加到文件的末尾。我试过Resharper,但是它的头文件选项只能包含静态文本(我试过Filename: $FILENAME$),模板选项只适用于新创建的类。

朋友们,这是一个研究项目,我必须提供源代码和论文。

如何从Visual Studio导出所有源代码到文本文件

应该可以了

string rootPath = @"path you your root folder";
var header = "***********************************" + Environment.NewLine;
var files = Directory.GetFiles(rootPath, "*.cs", SearchOption.AllDirectories);
var result = files.Select(path => new { Name = Path.GetFileName(path), Contents = File.ReadAllText(path)})
                  .Select(info =>   
                      header
                    + "Filename: " + info.Name + Environment.NewLine
                    + header
                    + info.Contents);

var singleStr = string.Join(Environment.NewLine, result);
Console.WriteLine ( singleStr );
File.WriteAllText(@"C:'output.txt", singleStr, Encoding.UTF8);

备注:如果您遇到性能或内存效率低下,请尝试使用StringBuilder代替,并在开始时将其容量设置为所有文件内容的总和。这将消除在上一个Select方法中创建的大量冗余字符串。

我会自己动手解决。

这可以帮助您将每个文件的内容放入String中。

using System.IO;
...
foreach (string file in Directory.EnumerateFiles(folderPath, "*.cs"))
{
    string contents = File.ReadAllText(file);
}

你有文件名,所以你可以把它附加在开头。

你所需要做的就是解析所有的目录。

   public void DirSearch(string root)
   {
           foreach (string file in Directory.EnumerateFiles(root, "*.cs"))
           {
                    string contents = File.ReadAllText(file);
                    // Write to your outputfile once you've happened what you want in your header.
           }
           foreach (string d in Directory.GetDirectories(root))
           {
               DirSearch(d);
           }
   }

作为无代码解决方案,如何尝试windows命令行将所有文件合并为一个。

。Copy/b *.cs newfile.txt

https://superuser.com/questions/111825/any-command-line-or-batch-cmd-to-concatenate-multiple-files

不可否认,它既快又脏,但它可能会产生您需要的一些裁剪

我会编写一个简单的控制台应用程序来做到这一点。它将搜索所有扩展名为*.cs的文件,进行必要的修改,然后将文件保存到所需的位置。您可以使用Directory.EnumerateDirectories()迭代地遍历目录。