ASP.NET页面提示需要引用一个不存在的程序集!

12

我的asp.net网站必须在多个客户端服务器上运行。在大多数情况下它能正常工作,但是有几个页面在某些服务器上出现了错误信息:

编译器错误消息:CS0012: 类型“MetaNameValuePair”在未被引用的程序集中定义。您必须添加对程序集“App_Code.t_3vcono、Version=0.0.0.0、Culture=neutral、PublicKeyToken=null”的引用。

实际上,“MetaNameValuePair”类型是在我的App_Code文件夹中的一个.cs文件中定义的,而不是外部程序集。是否编译这个.cs文件失败了呢?

5个回答

13

尝试 1:

几个月前也有一个类似的问题被问到过,可以查看那些答案。

尝试 2:

您是否清除了站点的“临时 ASP.Net 文件”,通常位于 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files?可能会有旧版本残留在那里。


1
我看了一下,但那是一个关于引用“真实”程序集(.dll)的问题。正如我在我的问题中提到的那样,所列出的类型并没有在单独的程序集中定义,而是在同一站点中定义的。 - Jake Stevenson
1
清除临时文件看起来已经完成了。非常感谢。 - Jake Stevenson

8

对于一些特殊情况,如果您在 Web.config 文件中禁用批处理编译,则可以摆脱这个问题:

<system.web>
    ...
    <compilation debug="true" targetFramework="4.0" batch="false" />
    ...
</system.web>

编译完成后,您可以将值改回True或删除“batch”属性,然后成功重新构建。


1
我发现清除缓存对我没有用 - 虽然这会减慢速度,但作为第二选择确实有效。 - Ian

1
我遇到过这种情况。解决方法是关闭并重新打开Visual Studio。
至少在我的情况下,似乎与...有关。

0

对我来说,这些解决方案都没有起作用。它抱怨的代码是这个:

thisSession = ((SiteMasterPage)this.Master).foo;

我正在将页面的一般主页面转换为特定主页面,这使我可以访问页面主对象中的foo对象,该对象是具有琐碎用户数据的复杂对象。

如果你想知道我为什么要这样做,那是因为到目前为止它是最好的解决方案。要求规定我不能扩展页面类,没有会话变量或Cookie,并且必须是用户特定数据。

我没有足够的声望来评论,所以我只能在答案中回复。 :(


您应该打开一个新问题,陈述您的具体情况,并在其末尾添加一段解释为什么其他类似的问题不适用于您的情况。 - Frédéric

0

以上的解决方案在过去对我有效,但这次不行。

最终我找到了原因:是一个服务器端标签(例如像 <%# Eval("Something") %>)在aspx页面上控件的属性中。

在问题出现前不久我添加了它,而移除它后问题消失了。它在GridView的TemplateField中。

很奇怪,但这就是解决问题的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接