2013-03-21 5 views
7

Ich habe eine relativ große Visual Studio-Lösung.Wie kann der gesamte Quellcode aus Visual Studio in eine Textdatei exportiert werden?

Ich muss den gesamten Quellcode in eine Textdatei exportieren. Ich möchte auch irgendwo einen Dateinamen angeben. Wie kann ich das tun?

Zum Beispiel, wenn ich

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

ich dies auf die output.txt Datei gehen wollen (oder einem anderen Text-Format) und erscheinen wie so

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

Alle anderen Typen einen Typ haben wird nur am Ende der Datei angehängt. Ich habe Resharper versucht, aber die Header-Dateioptionen können nur statischen Text enthalten (ich habe versucht, Filename: $FILENAME$) und die Vorlage-Option gilt nur für die neu erstellten Klassen.

Leute, dies ist ein Studienprojekt, wo ich den Quellcode zusammen mit einer Diplomarbeit zur Verfügung stellen muss.

+0

Es tut mir leid, aber ich kann mir nicht helfen, zu fragen, . . . Warum? Warum musst du das tun? –

+0

@oleksii - Vielen Dank für Ihre Fairness mit den Abstimmungen. Ich weiß nie, ob es sich lohnt, diese Fragen zu beantworten, da immer die meisten Antworten ähnlich sind und alle innerhalb kurzer Zeit. – MarcF

Antwort

8

: Wenn Sie Leistung oder Speicher Ineffizienzen auftreten, versuchen StringBuilder stattdessen zu verwenden und es ist Kapazität zu Beginn der Summe aller Dateien, Inhalte einzustellen. Dadurch werden viele redundante Strings eliminiert, die in der letzten Select Methode erstellt wurden.

1

Ich würde eine einfache Konsole App schreiben, um das zu tun. Es würde nach allen Dateien mit der Erweiterung * .cs suchen, die notwendigen Änderungen vornehmen und die Datei am gewünschten Ort speichern. Sie können iterativ Verzeichnisse durchlaufen, indem Sie Directory.EnumerateDirectories() verwenden.

2

Ich würde für eine hausgemachte Lösung gehen.

Dies hilft Ihnen, in eine Zeichenfolge den Inhalt jeder Datei zu erhalten.

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

Sie haben den Dateinamen, also können Sie ihn am Anfang anhängen.

Alles, was Sie noch tun müssen, ist durch alle Verzeichnisse zu analysieren. Dies sollte den Trick

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

Bemerkungen machen

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