2014-03-06 111 views
1

所有的.cs文件我有一個在本地建立一個.NET解決方案,但我們構建服務器上構建失敗,錯誤都是一樣的東西:的MSBuild不編譯項目

類型或命名空間名稱'XXX'不存在於名稱空間'Foo.Bar'中(您是否缺少程序集引用?)

我注意到的奇怪之處在於,當我檢查本地編譯的DLL只需反編譯,類型XXX就存在於Foo.Bar.DLL中。當我檢查構建服務器上編譯的Foo.Bar.DLL時,類型XXX不存在,事實上Foo.Bar名稱空間中的類不存在於dll中。

在我的例子中,名稱空間Foo.Bar包含所有屬於Serializable,XmlTypeAttribute和XmlRoot的類,這會影響MSBuild構建項目的方式嗎?

+0

這聽起來很像XML序列化類,通常由sgen.exe生成。或者Project + Properties,Build選項卡,「Generate serialization assembly」選項。或者與pr0n有關,混淆名字並不能幫助我們幫助你。 –

回答

0

檢查編譯生成順序。(右鍵單擊項目,項目依賴,建立生成順序) 它似乎與Foo.Bar.dll參考編譯項目之前Foo.bar.dll 添加FooBar的作爲你的項目的依賴。 它在本地編譯,因爲您已經手動編譯過FooBar

+0

我已經將此標記爲答案,但我也必須舉起手來犯錯。事實證明,其中一個項目被引用爲編譯的dll而不是項目引用。編譯後的dll在每個Visual Studio版本本地更新,但由於某種原因,MSBuild使用的是過期版本。我刪除了所有對編譯後的dll的引用,並將它們更正爲項目引用,現在問題已修復,並且我有一個工作版本。 –