2014-10-07 128 views
0

我有一個使用不同版本的.NET的項目的構建定義。一些使用4.0和其他使用4.5TFS構建程序集版本衝突

  • 4.0的項目使用EntityFramework 4.4。
  • 使用4.5的項目EntityFramework 5.0。

這是給我很多頭疼的,因爲當編譯去OK,測試不會在構建服務器通過因爲組裝的EntityFramework是不正確的。

似乎每個項目都會用輸出文件夾中所需的項目覆蓋現有的程序集,所以運行正確的程序運行測試是件幸運的事情。

我該如何避免這個問題?我可以強制輸出文件夾保留最新版本的EF並放入裝配體?

謝謝。

編輯:我檢查基於答案生成定義和發現這一點:

編輯2:快照對應於從TFS的早期版本遷移的模板,所以它不看像默認的那樣。無論如何,我突出顯示的選項適用於我:)我將問題標記爲已回答。

Build Definition

+0

您正在使用哪個版本的TFS? – 2014-10-07 10:17:03

+0

TFS版本2013. – SuperJMN 2014-10-07 10:28:12

回答

2

你基本上有3個選擇,這取決於你如何構建應用時會是什麼。

選項1 設置輸出位置是PerProjectAsConfigured,這將使得每個應用程序被丟棄到它自己的文件夾,然後將測試應與目標EF框架獨立運行。 如果您將按每個項目部署單獨的應用程序,這很好。 Build Definition Set Output Location

選項2 保留所有設置的是,改變你的構建順序,以便EF的最新版本得到最後建成,因此在下拉文件夾中保留的最新版本,可以再加入重定向的要求

選項3 標準化EF版本並更新所有項目以指向單個版本。

+0

我已將圖像附加到我在Visual Studio 2013中設置的屏幕上。我認爲它是不同的。你可以,檢查一下嗎?謝謝。 – SuperJMN 2014-10-07 13:54:30

+0

嗯,不2013模板?你有沒有從以前的版本帶來模板? TFS2010? – 2014-10-07 14:16:48

+0

哦,我很害怕他們遷移以前版本的模板:(這可能是問題! – SuperJMN 2014-10-07 14:51:46