2013-03-21 60 views
7

Tôi có một giải pháp Visual Studio tương đối lớn.Làm cách nào để xuất tất cả mã nguồn từ Visual Studio sang tệp văn bản?

Tôi cần xuất tất cả mã nguồn thành tệp văn bản. Tôi cũng muốn bao gồm một tên tập tin ở đâu đó. Làm thế nào tôi có thể làm như vậy?

Ví dụ nếu tôi có một loại

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

Tôi muốn điều này để đi đến tập tin output.txt (hoặc bất kỳ định dạng văn bản khác) và xuất hiện như vậy

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

Tất cả các loại khác chỉ được nối vào cuối tệp. Tôi đã thử Resharper, nhưng tùy chọn tệp tiêu đề của nó chỉ có thể chứa văn bản tĩnh (tôi đã thử Filename: $FILENAME$) và tùy chọn mẫu chỉ áp dụng cho các lớp mới được tạo.

Mọi người, đây là dự án nghiên cứu, nơi tôi phải cung cấp mã nguồn cùng với luận án.

+0

Tôi xin lỗi, nhưng tôi không thể giúp bản thân mình từ hỏi . . . tại sao? Tại sao bạn cần phải làm điều này? –

+0

@oleksii - Rất cám ơn sự công bằng của bạn với số phiếu bầu lên. Tôi không bao giờ biết liệu nó có đáng trả lời những câu hỏi này như thường xuyên hầu hết các câu trả lời là tương tự, và tất cả trong một khoảng thời gian ngắn là tốt. – MarcF

Trả lời

8

này nên làm các 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); 

Ghi chú: nếu bạn có kinh nghiệm thực hiện hoặc bộ nhớ không hiệu quả, hãy thử sử dụng StringBuilder thay vào đó và thiết lập nó là năng lực tại đầu đến tổng của tất cả nội dung file. Điều này sẽ loại bỏ rất nhiều chuỗi dư thừa, được tạo trong phương thức Select cuối cùng.

1

Tôi sẽ viết một ứng dụng bảng điều khiển đơn giản để thực hiện điều đó. Nó sẽ tìm kiếm tất cả các tệp có phần mở rộng * .cs, thực hiện sửa đổi cần thiết và sau đó lưu tệp vào vị trí mong muốn. Bạn có thể lặp qua các thư mục lặp lại bằng cách sử dụng Directory.EnumerateDirectories().

2

Tôi sẽ tìm giải pháp tự chế.

Điều này giúp bạn truy cập vào chuỗi nội dung của từng tệp.

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

Bạn có tên tệp, vì vậy bạn có thể thêm nó ngay từ đầu.

Tất cả những gì bạn vẫn cần làm là phân tích cú pháp thông qua tất cả các thư mục.

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); 
      } 
    } 
Các vấn đề liên quan