33

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

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

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

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

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

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

4

7 回答 7

31

我是迈克的同事,我们制定了解决方案。

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

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

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

<assemblies>
        <add assembly="MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=[MyPublicKeyToken]"/>   
</assemblies>
于 2008-11-12T19:32:54.487 回答
4

还有一个 bug 可以表现出类似的症状,描述在这里

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

于 2009-02-12T01:47:51.247 回答
3

在对这些类型的问题进行故障排除时,Fusion Log Viewer一直是一个很大的帮助。

于 2008-11-12T16:27:16.123 回答
1

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

于 2012-03-02T11:01:24.663 回答
0

我遇到了完全相同的错误,但是我的类中有一个公共构造函数,它用作参数,来自另一个项目的对象。

我通过使该构造函数内部化解决了这个问题。

于 2011-02-16T13:39:48.473 回答
0

通常,这是因为缓存的程序集。解决此问题的一种方法是在项目或配置文件中进行“强引用”。参考这篇博

于 2011-03-07T02:00:05.023 回答
0

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

在 Visual Studio 中,在解决方案资源管理器中打开“参考”,然后滚动浏览它。

如果有任何东西上有黄色警告三角形,请记住名称,将其删除,然后重新添加(或让 ReSharper 为您完成)。

当一位同事添加一个新的包和引用时,在拉取一个项目后发生在我身上好几次。

于 2018-05-07T00:14:12.250 回答