2013-06-22 42 views
3

我一直在網上尋找答案,可以真正使用幫助。類型'xxx'在沒有引用的程序集中定義

我已經看過關於這個錯誤的其他帖子,這些答案都沒有幫助我。

完整的錯誤是,

類型「XXX」是在未引用的組件定義的。您必須添加對程序集「xxx,版本= 0.0.0.0,文化=中性,PublicKeyToken = null」的引用。

該解決方案在本地生成良好,但是當我在構建服務器上觸發構建時發生錯誤。

下面是我在試圖解決這個迄今所做的:

  • 並確保所有項目引用是正確的(有一個建築師審查 我)
  • 改變了「SpecificVersion」屬性爲true
  • 刪除了參考,並添加回(在VS2012和編輯 所述的.csproj文件本身)
  • 內置生成服務器上本地的解決方案,它通過
  • 編輯 - 我還要提到我已經建立了這個解決方案在兩個不同的構建服務器,仍然得到同樣的錯誤

我使用VS2012和TFS2012做到這一點。

我真的很感謝任何幫助,謝謝。

* 更新: *我只是在構建服務器上做了一個MSBuild,但將配置更改爲「Release」,並能夠重現錯誤的部分內容。不過,一些關鍵的區別在於它尋找的版本突然出現在1.3.1.15而不是0.0.0.0,並且PublicKeyToken不再爲空。有誰知道這可能意味着什麼?程序集的版本應該是0.0.0.0。

+2

您是否檢查過以確保平臺兼容? (即確保.NET 4.0程序集沒有引用.NET 4.5程序集,或者.NET 4 Client Profile程序集沒有引用.NET 4完整程序集) –

+0

是的,一切都在.NET 4.0下運行 – Albert

回答

5

因此,在與我的架構師進行了幾個小時之後,我們發現了這個問題。我們的開發人員將多個相同dll的副本埋在我們的源代碼管理的各種文件夾中。其中一個項目引用了錯誤的.dll。

修復了引用並刪除了額外的未命名的.dll後,錯誤消失了,我們的版本終於正常工作了! :)

+5

使用Nuget - 會讓你的生活變得更簡單。 –

0

您提到您曾嘗試在測試服務器上構建解決方案。你使用visual studio 2012來構建解決方案還是實際運行msbuild?

精確測試是使用的MSBuild與此類似:

的MSBuild MySolution.sln/P:配置= 「調試」/ P:平臺= 「CPU的任何」

實際上,你可以得到通過查看TFS Build的構建日誌來確定命令,它將列出它執行的構建命令,並簡單地運行它(您需要刪除TFS Build爲記錄添加的額外東西)

之後,您可以運行在本地機器上執行相同的命令並查看它是否通過。

另一件要嘗試的是爲項目中的所有裝配設置「複製本地」。

希望這會有所幫助!

+0

我在測試服務器上使用了MSBuild,並且我剛剛檢查了「複製本地」設置,並且它們已經設置爲該項目的true。 :( – Albert

+0

,所以它在構建服務器上使用msbuild構建?也可以使用標準xaml構建tfs構建還是定製/修改構建?關於構建配置:構建過程參數中的「Clean Workspace」的設置是什麼當構建失敗時,你看到「構建代理文件夾」中的所有源代碼,並且是運行MSBuild時編譯的解決方案嗎? – Woland

+0

是的,它使用構建服務器上的msbuild構建。我使用標準xaml流程模板,我的「Clean Workspace」設置爲「Outputs」,但我也將它設置爲「All」,並且運行構建時沒有運氣。我檢查了服務器上的構建文件夾,它確實包含了所有運行msbuild時的源代碼。 – Albert

相關問題