Wpf 奇怪错误-CS0012:类型x在未引用的程序集中定义

Wpf 奇怪错误-CS0012:类型x在未引用的程序集中定义,wpf,user-controls,.net-2.0,assemblies,repeater,Wpf,User Controls,.net 2.0,Assemblies,Repeater,类型“x”是在未引用的程序集中定义的。必须添加对程序集“abc123”的引用 我有一个.NET 2.0 web应用程序,它引用我的程序集“abc123”。程序集存在于GAC中,我已经验证了它是正确的(相同的)版本。应用程序的其余部分没有问题,只有一个.aspx页面。该页面有一个中继器,将用户控件显示为其“字段”之一。将类型y的列表绑定到中继器后,我将类型x的列表(属性y)传递给用户控件,如下所示: <uc1:usercontrol id="ucusercontrol " runat="se

类型“x”是在未引用的程序集中定义的。必须添加对程序集“abc123”的引用

我有一个.NET 2.0 web应用程序,它引用我的程序集“abc123”。程序集存在于GAC中,我已经验证了它是正确的(相同的)版本。应用程序的其余部分没有问题,只有一个.aspx页面。该页面有一个中继器,将用户控件显示为其“字段”之一。将类型y的列表绑定到中继器后,我将类型x的列表(属性y)传递给用户控件,如下所示:

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

在用户控件的属性集中,我将类型为x的列表绑定到用户控件中的gridview

需要注意的一件奇怪的事情是,此报告在我的开发pc上运行良好,但在我部署之后,在任何服务器上都无法运行。我的电脑是WindowsXP,IIS6,VS2005。服务器是Windows Server 2003,IIS6


我希望我解释得足够好。提前感谢您提供的任何见解。

在解决这些类型的问题时,始终是一个很大的帮助。

我是Mike的同事,我们制定了解决方案

类型X是在他的程序集中定义的,它只在GAC中定义。尽管他的ASP.NET web应用程序确实有一个引用,但它无法仅为此用户控件从GAC加载。应用程序的其余部分按预期工作。我们通过在bin目录中放置程序集的副本来确认加载失败,并且一切正常。我们拆下了总成,问题又出现了

我们的解决方案是在Assemblys部分的web.config中手动添加一个条目,将ASP.NET指向GAC

看起来每当您在页面中引用类型(而不是代码隐藏)时,都需要在web.config文件或页面指令中定义的程序集信息

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

还有一个bug,它会以类似的症状表现出来,如下所述


解决方法是删除C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\目录中的所有内容,它似乎只在调试模式下显示出来。

我有完全相同的错误,但我的类中有一个public构造函数用作参数,一个来自另一个项目的对象


我通过将该构造函数设置为内部解决了这个问题。

通常是因为缓存的程序集。解决此问题的一种方法是在proj或config文件中进行“强引用”。参考此博客

我发现,如果
type x
实际上是你的
应用程序中的一个类
,弄脏它并重新保存通常会迫使web应用程序重新编译并解决问题。

对我来说,这是一个版本控制拉问题

在VisualStudio中,在解决方案资源管理器中打开“引用”,并在其中滚动

如果有任何东西上面有一个黄色警告三角形,请记住它的名称,删除它,然后重新添加(或者让ReSharper为您执行)


当一个同事添加了一个新的包和引用时,我在拉取一个项目后发生了几次这种情况。

该链接已断开。Codebetter.com返回503服务不可用错误。