2014-01-07 63 views
3

想象以下場景:TFS靜靜地修復.sln文件 - 有沒有辦法阻止它?

Solution1.sln包含項目ABC。 (.NET 4.0,C#)

Solution2.sln包含項目ABD。 (.NET 4.0,C#)

的顯影劑在Solution2.sln工作增加了在BD的參考。很顯然,Solution1.sln不再編譯,因爲它不包含D(經過測試,只是爲了確保VS2010,VS2013和獨立MSBuild)。

「問題」是每晚運行Solution1.sln運行正常,令人驚訝。當我查看構建服務器上的.sln文件時,發現它已被修改爲添加缺少的項目。

這看起來像是一個很好的功能,但我更願意意識到解決方案比擁有神奇功能的構建更加糟糕。

有沒有辦法在TFS2013中關閉此功能?我是相當於肯定這在TFS2010中不會發生,但我不能說TFS2012。

+0

它不應該那樣做。你確定sln文件在構建箱上被修改了嗎?你可以打開服務器上的SLN文件來檢查參考指向的地方嗎? –

+0

@AdarshShah .sln的「修改日期」比所有可追溯到構建工作流程的「獲取工作區」部分的其他文件遲一分鐘。也許我應該提到缺少的項目*在工作區中,而不是在解決方案中。構建服務器上的'.sln'文件包含對正確項目的引用。 – Vache

+0

它是一個項目參考或彙編參考? –

回答

0

解決方案只是一組項目,僅此而已。

當MSBuild在解決方案上工作時,它計算構建順序分析項目和二進制引用 - 該過程在Visual Studio和Team Build(即TFS)中是相同的。對於項目引用,它根據構建輸出確定項目是否應該重建。只要MSBuild能夠解析文件系統上的引用,一切都很好。

您將在Visual Studio中看到相同的行爲:您只會收到警告,但構建成功。

Team Build爲所有構建輸出使用單個目錄,因此您用於構建解決方案的順序也會影響二進制引用。

+0

就像我在問題中提到的那樣,構建失敗VS和獨立的MSBuild。我沒有收到任何警告......是否有任何設置可以改變以獲得您提到的行爲? – Vache

+0

我用VS 2013.1測試過,所以也許MSBuild 12有不同的行爲,但我不這麼認爲。 也許你的配置中缺少一些可能導致問題的東西。 –

相關問題