2013-11-26 31 views
1

我使用一種工具生成c#源代碼(thrift),每種類型一個文件。我想將所有類型合併到一個可編譯的源文件中。我說可編譯是因爲簡單地連接每個文件的文本會產生一個不能編譯的文件,例如多個使用塊。C#源文件合併

是否有一個命令行工具可以做到這一點,或者我是否需要創建一個,如果是的話,我應該怎麼看待這樣做。

=======編輯======

沒有找到任何東西,wimped了促進節約編譯器源代碼,所以我敲了這件事該做的伎倆:https://github.com/myles-mcdonnell/SourceMeld

現在,我可以在VS中添加兩個預構建步驟,一個用於生成源文件,另一個用於合併到一個文件(包含在項目中的文件),我在開發時有一個無縫構建過程。

回答

4

如果以智能方式編寫源文件,可以連接源文件。

看,這不工作:

using External.Name.Space; 
namespace My.Name.Space 
{ 
    ... 
} 

using External.Name.Space; 
namespace My.Name.Space 
{ 
    ... 
} 

但這:

namespace My.Name.Space 
{ 
    using External.Name.Space; 

    ... 
} 

namespace My.Name.Space 
{ 
    using External.Name.Space; 

    ... 
} 

這兩個符號大多是功能上等同(有關詳細信息,請參閱 「Should Usings be inside or outside the namespace」)。

像ReSharper這樣的工具可以將您的所有源文件從第一個符號轉換爲第二個符號(即使免費試用版也可以)。

編輯:

我忘了你正在使用的代碼生成器。然後你有這些選項:

  1. 更改Thrift的模板(我不熟悉該工具,但我希望它有某種模板)。
  2. 編寫一個工具,用於從名稱空間外部移動用戶。這應該是一個Regex.Replace調用。
  3. 編寫一個讀取連接文件並將所有用法移到頂端的工具。再次,這應該是非常簡單的。
+1

「聰明的方式」是一個糟糕的選擇的話,但這個想法將工作。 –

+0

這是一個選項,但它需要我擴展/更改thrift編譯器。我希望找到後期解決方案。 –

+0

@MylesMcDonnell編輯。 –