2017-09-25 178 views
1

我們使用Jenkins構建使用msbuild的項目。MSBuild成功,但Visual Studio失敗

我添加了一個項目引用到一個現有的項目,但忘了將這個新項目添加到所有的解決方案文件。

我承諾,但詹金斯告訴我,一切正常。 我想,在命令行:

msbuild test.sln /t:Rebuild /p:Configuration=Debug 

有工作正常,在詹金斯和我的開發機器上完全清除工作目錄。輸出告訴我,msbuild找到該項目並構建它。

但是,如果我打開Visual Studio 2017並嘗試構建該解決方案,它會告訴我依賴項目找不到。

這是正確的。

如何強制msbuild僅構建解決方案文件中指定的項目,以便我們能夠找到錯過該新項目的所有解決方案?

順便說一句:我們不需要提示如何找到所有需要包含該新項目的解決方案。尋找解決方案非常簡單。

+0

你是什麼意思「但忘了將這個新項目添加到所有的解決方案文件。」?你是不是說你沒有提交這個新項目?你能否給我一些更詳細的步驟來重現這個問題? –

+0

@ Leo-MSFT我們有多種解決方案,都包含一個共同的項目。該項目得到了一個新組件的參考。我只將這個項目添加到一個解決方案中,我創建了它,並忘記了所有其他解決方案文件。爲了更好的理解:我們正在使用項目引用。 –

+0

感謝您的回覆。您的項目結構是這樣的:https://1drv.ms/i/s!Ai1sp_yvodHfc7qaSvEkVpyMOHc,現在,您想要構建指定的通用項目,然後能夠找到錯過了新項目的所有**解決方案? AFAIK,我們可以使用命令行:「msbuild CommonProjectName.csproj/t:Rebuild/p:Configuration = Debug」來構建一個解決方案文件中的指定內容,除了構建所有解決方案外,我們無法找到所有錯過新項目的解決方案。 –

回答

0

如何強制msbuild只生成解決方案文件中指定的項目,以便我們能夠找到錯過新項目的所有解決方案?

避免的MSBuild的重建在溶液文件中列出的所有依賴的默認行爲,正確的方法是將BuildProjectReferences屬性設置爲false,那麼構建命令行應該是:

MSBuild Test.sln /t:Rebuild /p:Configuration=Debug /p:BuildProjectReferences=false 

使用後此命令行中的MSBuild將獲得與VS相同的錯誤,因此我們可以發現,錯過了所有的解決方案,新的項目

enter image description here

注意:BuildProjectReferences將檢查解決方案文件中列出的所有依賴項,因此請保持其值爲true,除非用於檢查缺少的依賴項。

希望這會有所幫助。

+0

這看起來完全像我尋找的解決方案。錯誤發生像預期的那樣。但是,如果我有一個正確的解決方案,它不起作用。一個正確的解決方案不會建立。 –

+0

@Verarind,是的,BuildProjectReferences將檢查解決方案文件中列出的所有依賴項,所以請保持其值爲true,除非用於檢查缺少的依賴項。 –

相關問題