2009-10-26 80 views
5

我們使用Make來編譯我們的產品,其中包括C,C++,Java和其他一些零散件。儘可能多地將所有檢查到的東西編譯爲源代碼管理,消除本地依賴並確保各個開發機器之間的一致性。用於Visual Studio項目的獨立構建系統

最近我們添加了一些用C#編寫的使用Visual Studio的組件,並希望對Visual Studio解決方案採取類似的方法。去掉devenv不是一個好的選擇。直接調用csc.exe(正如我之前使用Nant所做的那樣)需要跟蹤構建腳本中的文件依賴關係,我寧願讓Visual Studio解決方案執行此操作。

MSBuild似乎是一個不錯的選擇,雖然它在%windir%\Microsoft.NET\Framework\[version]\的默認位置讓我擔心機器之間的差異,包括路徑中的[版本]以及您將同時看到「Framework」和「Framework64」目錄。我不介意要求所有開發人員安裝任何.NET Framework版本,但我擔心您的v3.5可能與我的版本不一樣。

有沒有人有解決方案,他們喜歡這個?試過了你真的不喜歡的東西?

回答

6

當然MSBuild是最低摩擦的選項。不同的fx版本在構建時並不是什麼大問題 - 如果你使用的fx版本比安裝的版本重要,那麼它將無法構建。在我最後一個地方,我們構建了一個以NAnt爲基礎的巨大的多環境構建系統,並且使用NAnt的MSBuild任務吸引了MSBuild。如果你只是在做微軟的東西,MSBuild很好,但是我們有一些MSBuild本來不支持的東西,因此NAnt包裝器。

+0

謝謝你所有的答案。 - Eric – 2009-10-27 18:46:58

+0

什麼是「fx版本」? – 2017-03-19 12:43:28

0

MSBuild是此工作的最佳工具。只需將您的框架版本與您使用的Visual Studio捆綁在一起的框架版本匹配即可。

32位與64位無關緊要,我不認爲 - 我敢肯定,Csc.exe的32位和64位版本都可以交叉編譯到其他平臺。 MSBuild項目文件(*。* proj XML文件)應包含MSBuild構建應用程序所需的所有內容。

1

我同意其他人的意見。爲了簡單起見,只需將vsvars.bat(Visual Studio命令提示符的批處理文件)作爲構建腳本的一部分,然後MSBuild將正常工作。

0

我們使用Nant來驅動msbuild。如果您擔心該框架的不同版本,特別是Service Pack,請使用FxCop檢查是否不讓意外的依賴項出現。詳細信息請見this answer

相關問題