2009-04-12 67 views
1

This question非常相似,但唯一的答案似乎並沒有回答我的需求)。如何將代碼生成併入C#解決方案?

我想在C#中使用Thrift,並正在考慮構建過程將究竟如何工作。 Visual Studio 2008中的C#項目是否支持生成C#類的自定義構建操作?

我找到了「自定義工具」選項,但我不知道這就是我要找的......它只允許設計時使用(沒有被整合到構建過程,而是用鼠標右鍵單擊「運行自定義工具「)。

更新菲昂建議

預生成事件確實是最理想的,因爲他們沒有考慮的依賴考慮,延長了構建過程。而且,它們是從中央位置而不是按文件進行管理的。

回答

2

如果您只是將您的代碼生成到預生成事件中,該怎麼辦?

它們位於Visual Studio項目屬性的「生成事件」部分。

此外,他們支持某些宏,你會看到,如果你使用「編輯預建...」按鈕。

+0

這是非常不理想的,因爲它會影響VS如何解決依賴於該項目的項目是否應該重建。 – 2009-04-12 18:19:25

0

MS Build是高度可配置的。 Visual Studio本身也是very extensible。您可以使用CodeDOM來發射類。根據你想要投入多少時間來定製VS和構建過程,幾乎沒有你做不到的事情。

1

最簡單,最安全的辦法是包括代「預生成事件」爲菲昂提到。優點:代碼總是正確的,缺點:慢,因爲這意味着在每次編譯時重新生成源代碼,然後重新生成所有依賴項,因爲生成的代碼已被更改。

另一種方法是手動重新生成代碼文件,如果你有一個構建機器/持續集成重建代碼文件的每個版本。優點:如果幾乎沒有變化,則構建速度更快缺點:過時的生成代碼以及嘗試解決錯誤的浪費時間。

讀取C#項目的幫助下,看來你需要一個插件,爲您提供所需的自定義工具作用。但在C++項目中,您可以定義自己的自定義步驟MS-Help。因此,您可以開發一個VisualStudio插件(或找到一個)或將C++項目添加到您的解決方案中,併爲該項目添加一個自定義構建步驟,然後將輸出包括在正常的C#項目中。

第一個谷歌'visual studio custom tool code gen'有一個how-to write your own Custom Tool這將是一個很好的起點。

相關問題