奇怪错误 - CS0012:类型x在未引用的程序集中定义
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了奇怪错误 - CS0012:类型x在未引用的程序集中定义相关的知识,希望对你有一定的参考价值。
类型“x”在未引用的程序集中定义。您必须添加对程序集“abc123”的引用。
我有一个.NET 2.0 Web应用程序,引用我的程序集'abc123'。该程序集存在于GAC中,我已经验证它是正确的(相同)版本。除了一个.aspx页面之外,其余的应用程序都没有问题。有问题的页面有一个转发器,它将用户控件显示为其“字段”之一。在将类型y的列表绑定到转发器时,我向用户控件传递类型x的列表(y的属性),如下所示:
<uc1:usercontrol id="ucusercontrol " runat="server" myPublicUserControlProperty='<%#Eval("CollectionOfX") %>'/>
在用户控件的属性集上,我将类型x的列表绑定到用户控件中的gridview。
需要注意的一件奇怪的事情是,这个报告在我的开发PC上工作正常,但在我部署之后在任何服务器上都没有。我的电脑是Windows XP,IIS6,VS2005。服务器是Windows Server 2003,IIS6。
我希望我解释得那么好。提前感谢您提供的任何见解。
我是Mike的同事,我们制定了一个解决方案。
类型X在其程序集中定义,仅在GAC中定义。尽管他的ASP.NET Web应用程序确实有一个引用,但它无法仅为此UserControl从GAC加载。应用程序的其余部分按预期工作。我们通过将程序集的副本放在bin目录中来确认加载失败,一切正常。我们删除了组件,问题又回来了。
我们的解决方案是手动将条目添加到程序集部分的web.config中,以将ASP.NET指向GAC。
看起来只要您在页面中引用类型(而不是代码隐藏),就需要在web.config文件或page指令中定义的程序集信息。
<assemblies>
<add assembly="MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=[MyPublicKeyToken]"/>
</assemblies>
还有一个可以表现出类似症状的错误,描述了here。
解决方法是删除C: WINDOWS Microsoft.NET Framework v2.0.50727 Temporary ASP.NET Files 目录中的所有内容,它似乎只在调试模式下显示。
在解决这些类型的问题时,Fusion Log Viewer一直都是一个很好的帮助。
我发现如果type x
实际上是你的App_Code
中的一个类,弄脏它并重新保存通常会迫使web应用程序重新编译并解决问题。
通常,这是因为缓存的程序集。解决此问题的一种方法是在proj或配置文件中创建“强引用”。请参阅此博客post
我有完全相同的错误,但我在我的类中有一个公共构造函数,用作参数,来自另一个项目的对象。
我通过使构造函数内部解决了这个问题。
对我来说这是一个版本控制拉问题。
在Visual Studio中,在解决方案资源管理器中打开“引用”,然后滚动它。
如果任何东西上有黄色警告三角形,请记住名称,将其删除,然后重新添加(或让ReSharper为您执行此操作)。
当一个同事添加了一个新的包和引用时,拉了一个项目后发生了好几次。
以上是关于奇怪错误 - CS0012:类型x在未引用的程序集中定义的主要内容,如果未能解决你的问题,请参考以下文章
类型“System.Data.Objects.DataClasses.EntityObject”在未被引用的程序集中定义。
错误 CS0012:“ConnectionStringSettings”类型是在升级到 Visual Studio 2015 后未引用的程序集中定义的