2011-05-11 79 views
3

我們有幾百個visual studio項目文件,我需要將它們組合到一個構建解決方案中。我們目前有一個使用rake的自定義ruby腳本來執行此操作。但是很脆弱,只允許一些視覺工作室宏($(TargetDir),$(TargetName)等)通過,而其餘的失敗。再加上Ruby的語法像Perl一樣揉搓我:錯誤的方式。生成具有依賴關係的解決方案,用於構建包含數百個項目的VS 2010

所以我的問題是,鑑於目錄是否有一個工具,將遞歸地找到所有的.vcxproj和.csproj文件,並生成一個解決方案文件與依賴關係?當我說'與依賴關係'時,這意味着有些項目需要在其他項目之前建立。我在堆棧溢出中發現了一些其他帖子,它指出了一個生成解決方案文件的工具:但它不會生成依賴關係。因此,如果沒有依賴項,任何解決方案創建工具都是無用的有沒有人知道會做到這一點的東西?

如果不是解決方案文件,有誰知道會發出依賴列表的東西嗎?

P.S. 之前有人問:手動創建解決方案文件是完全不可能的。我們只是有太多的項目文件。

+0

我可以碰到這個嗎? – 2011-05-11 16:20:37

回答

3

所以我的問題是,給定一個目錄 是有一個工具,將遞歸 找到所有所有的.vcxproj和的.csproj 文件,並生成相關性的解決方案文件 ?

你問什麼是非常合理的;你對這個問題的態度是相當理性的。不幸的是,這些工具並沒有跟上你的步伐。 (我們遇到同樣的問題。)

您將不得不自己編寫腳本,或者自定義工具。這就是我們所做的。我已經看到了成功的方法包括:

  1. 生成*.vcproj/*.sln從 「參照項目定義」, 使用工具,如CMakeQMakeScons,或 Gyp。我們的主系統目前位於Scons上 ,使用我們自定義的Python 代碼來導航這些依賴關係, 基於項目 (spidering dependencies)生成解決方案。通過 默認,我們爲每個項目(包括 所有需要的配套項目)生成一個「完整」 解決方案, 加上「Master All Projects」 解決方案。它工作得很好。但是, 它是花了力氣, 定製工作和我們擴展Scons多少有點 形容我們的項目(但我們只是 依靠Scons*.sln*.vcproj)。

  2. 編寫自定義工具「中找到」這些依賴性通過 解析在 工作區所有*.vcproj文件。這是工作,但可以完成。這些文件可能是「棘手」的導航,但你可能會用一個「足夠好」的解決方案,使用GUID作爲散列鍵來生成這些依賴關係。

我完全同意你的看法:這種類型的東西(項目依賴)是比登天還難,當你超越手動維護「簡單」(例如,許多幾十個項目,是的,我們也有數百個)。

對不起。 MSVS是一個相當不錯的IDE(專門用於迭代開發),以及一個可怕的構建配置管理系統,而不是設計用來完成我們正在討論的內容。

因爲我關心你的理智和你永恆的靈魂,請請不要嘗試在MSBuild中編寫你的自定義解決方案。

+0

#1你列出的字母湯是相當的列表。他們是什麼? – 2011-05-11 21:05:25

+1

抱歉,我們使用的是scons(http://www.scons.org/)和qmake(http://en.wikipedia.org/wiki/Qmake),但如果您想學習CMake,它非常強大它(http://www.cmake.org/)。但是,Google的gyp(http://code.google.com/p/gyp/wiki/GypUserDocumentation)顯示了很多有趣的承諾(尚未使用)。 Scons是一個構建系統,但提供了本地* .sln和* .vcproj的「導出」。其他(cmake,qmake,gyp)是「項目生成器」,它們從它們自己的「項目定義文件」生成本地* .vcproj/*。sln文件。 – charley 2011-05-11 21:14:52

+0

這些都是做什麼工具?生成充足的輸入依賴關係? (編輯)看起來你在我打字的時候回答了我的問題...... – 2011-05-11 21:18:30

0

在一個側面說明,有數百VS項目是一個壞主意,它會殺死VS演出,看到two white-books

+1

其實我們從來沒有在Visual Studio中加載解決方案。它僅用於構建(最終調用msbuild)。當我們編輯東西時,我們只加載一兩個項目。 – 2011-05-12 16:42:51

+0

另外,我們的代碼庫大約95%是原生的。 – 2011-05-12 16:44:54

+0

原始問題的實際答案如何?你有什麼信息嗎? – 2011-05-12 16:48:17

相關問題