2008-11-12 204 views
28

類型'x'在未引用的程序集中定義。您必須添加對程序集「abc123」的引用。奇怪的錯誤 - CS0012:類型x在未引用的程序集中定義

我有一個.NET 2.0 web應用程序引用我的程序集'abc123'。該程序集存在於GAC中,我已經驗證它是正確的(相同)版本。除了一個.aspx頁面外,其餘應用程序沒有問題。有問題的頁面有一箇中繼器,將用戶控件顯示爲其「字段」之一。一旦鍵入y的列表結合到中繼我通過用戶控制型X(Y的性質)的列表如下所示:

<uc1:usercontrol id="ucusercontrol " runat="server" myPublicUserControlProperty='<%#Eval("CollectionOfX") %>'/> 

在用戶控件的屬性集,我結合類型的列表x到用戶控件中的gridview。

一件奇怪的事情要注意的是,這份報告在我的開發電腦上正常工作,但一旦部署,我就不會在任何服務器上工作。我的電腦是Windows XP,IIS6,VS2005。這些服務器是Windows Server 2003,IIS6。

我希望我解釋得很好。預先感謝您提供的任何見解。

回答

27

我是Mike的同事,我們制定了一個解決方案。

類型X在他的程序集中定義,僅在GAC中定義。儘管他的ASP.NET網頁應用程序確實有參考,但僅從此用戶控件的GAC加載失敗。其他應用程序按預期工作。我們通過將程序集的副本放入bin目錄來確認加載失敗,並且一切正常。我們拆下了組件,問題又回來了。

我們的解決方案是手動將條目添加到程序集部分的web.config中,以將ASP.NET指向GAC。

它看起來像任何時候在頁面中引用類型(而不是代碼隱藏)時,您需要在web.config文件或頁面指令中定義的程序集信息。

<assemblies> 
     <add assembly="MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=[MyPublicKeyToken]"/> 
</assemblies> 
3

還有一個可以表現出類似症狀的錯誤,描述爲here

的解決辦法是在C刪除一切:\ WINDOWS \ Microsoft.NET \框架\ V2.0.50727 \臨時ASP.NET文件\目錄下,並且似乎只體現在調試模式。

+1

鏈接已損壞。 – 2011-03-10 13:55:52

0

我有完全相同的錯誤,但我在我的類中有一個public構造函數,用作參數,來自另一個項目的對象。

我解決了這個問題,使構造函數內部。

0

更多的時候,這是因爲緩存的組件。解決此問題的一種方法是在proj或config文件中創建「強引用」。請參閱本博客post

1

我發現,如果type x實際上是一類在你App_Code,弄髒它,並重新保存經常迫使Web應用程序重新編譯,並解決問題。

相關問題