2008-11-12 60 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应用程序重新编译,并解决问题。

相关问题