2010-03-18 16 views
0

我有一個將用戶控件加載到.NET Web應用程序中的應用程序。當我在我的開發機器上本地編譯和測試應用程序時,它可以在我的機器上運行。項目在構建服務器上使用MSBuild成功構建。但是,當我部署在生成服務器上生成的MSBuild的DLL時,我得到以下錯誤時應用程序加載該控件:在構建服務器而不是開發機器上編譯DLL時的差異

BC30456:'CreateResourceBasedLiteralControl'不是'ASP.usercontrols_somecontrol_ascx'的成員。

我看了看,相比我的機器上生成,相比它的dll(看了看文件大小)與構建服務器創建的,並注意到 在文件大小差異。考慮到本地構建的代碼和構建服務器上的代碼是相同的,這是令人困惑的。我手工比較每個文件。所以我的問題是:是什麼導致這個錯誤?在編譯代碼時,MSBuild的代碼編譯和Visual Studio中發生的事情有什麼不同?

回答

4

你有一個版本問題。目標機器上的一些程序集與開發機器上的不同。恐怕你將不得不做一些挖掘工作來追捕它,因爲這個錯誤信息完全沒有幫助。真的,它指出你在錯誤的方向,因爲問題不在你的組件。這可能是由項目引用中的某些內容引起的。你的開發機器上是否有尚未在服務器上更新過的第三方工具或SDK?

上次我看到這個時,我建立了一個DotNetNuke模塊,它是針對比我的服務器更新的DotNetNuke.dll程序集而構建的。

+1

你完全正確!我查看了詳細的編譯器輸出,並看到引用的版本問題。這是完美的,因爲我們將補丁應用於沒有提供所有依賴的應用程序。感謝您的幫助。 – Achilles 2010-03-23 17:02:14

+0

我經常這樣做,當我有一個已發佈的應用程序,並從FTP服務器獲取文件,並且它沒有更新從指令文件更新文件時。正常..清除/ Bin文件夾,然後再次複製所有文件。 – JanBorup 2014-04-01 09:27:55

0

如果您編譯爲dll
嘗試刪除App_Code.dllbin文件夾中。

相關問題