Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将所有源代码从VisualStudio导出到文本文件中?_C#_Visual Studio 2010_Export_Resharper - Fatal编程技术网

C# 如何将所有源代码从VisualStudio导出到文本文件中?

C# 如何将所有源代码从VisualStudio导出到文本文件中?,c#,visual-studio-2010,export,resharper,C#,Visual Studio 2010,Export,Resharper,我有一个相对较大的VisualStudio解决方案 我需要将所有源代码导出到文本文件中。我还想在某处包含一个文件名。我该怎么做? 例如,如果我有一个类型 namespace MyProject.Core { /// <summary> /// Enumerates possible record status /// </summary> public enum RecordType { NonWearTime

我有一个相对较大的VisualStudio解决方案

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

例如,如果我有一个类型

namespace MyProject.Core
{
    /// <summary>
    ///   Enumerates possible record status
    /// </summary>
    public enum RecordType
    {
        NonWearTime = 0,
        WearTime = 1,
        NotClassified = 2
    }
}
所有其他类型应仅附加到文件末尾。我尝试了Resharper,但是它的头文件选项只能包含静态文本(我尝试了
Filename:$Filename$
),模板选项只适用于新创建的类


伙计们,这是一个研究项目,我必须在论文中提供源代码。

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

迭代地遍历目录,我会选择一个自制的解决方案

这有助于将每个文件的内容放入字符串中

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);
           }
   }

这应该能奏效

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
方法中创建的大量冗余字符串。

作为无代码解决方案,尝试使用windows命令行将所有文件合并为一个怎么样

e、 g.复制/b*.cs newfile.txt


诚然,它又快又脏,但经过一些裁剪,它可能会产生你所需要的东西

对不起,但我忍不住要问。为什么?你为什么要这么做?@oleksii-非常感谢你公平地获得了更多的选票。我从来不知道回答这些问题是否值得,因为大多数答案都是相似的,而且都是在很短的时间内得到的。
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);