【问题标题】:ASP.NET Page says I need to reference an assembly that does not exist!ASP.NET 页面说我需要引用一个不存在的程序集!
【发布时间】:2009-01-30 16:52:32
【问题描述】:

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

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

“MetaNameValuePair”类型实际上是在我的 App_Code 文件夹中的 .cs 文件中定义的,而不是外部程序集。是否无法编译该 .cs 文件?

【问题讨论】:

    标签: asp.net compilation


    【解决方案1】:

    尝试 1:

    A similar question 几个月前被问到并查看这些答案。

    尝试 2:

    您是否清除了站点的“临时 ASP.Net 文件”,通常位于 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files?可能有一个旧副本徘徊。

    【讨论】:

    • 我看过了,但这是一个关于引用“真实”程序集 (.dll) 的问题。正如我在问题中提到的,列出的类型不是在单独的程序集中定义的,而是在同一个站点中定义的。
    • 清除临时文件看起来是这样。非常感谢。
    【解决方案2】:

    对于某些特殊情况,如果您在 Web.config 文件中禁用 batch compilation,如下所示:

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

    编译完成后,可以将值改回True或去掉“batch”属性,即可重建成功。

    【讨论】:

    • 我发现清除缓存对我不起作用 - 虽然这会减慢速度,但它确实可以作为第二个手段。
    【解决方案3】:

    经历过无数次。解决方法是关闭并打开 Visual Studio。

    至少在我的情况下,它似乎有一些事情要做

    【讨论】:

      【解决方案4】:

      没有一个解决方案对我有用。它抱怨的代码是这样的:

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

      我将页面的通用母版页转换为特定母版页,这允许我访问页面母版页上的 foo 对象,这是一个包含微不足道的用户数据的复杂对象。

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

      我没有足够的声誉来发表评论,所以我必须在答案中回复。 :(

      【讨论】:

      • 您应该针对您的具体案例提出一个新问题,并在其末尾有一段解释为什么您看到的其他类似问题不涉及您的案例。
      【解决方案5】:

      上述解决方案过去对我有用,但这次不行。

      我终于找到了原因:来自 aspx 页面上控件属性的服务器端标签之一(如 )。

      我在问题出现前不久添加了它,删除它使问题消失了。它位于 GridView 上的 TemplateField 中。

      很奇怪,但这就是诀窍。

      【讨论】:

        猜你喜欢
        • 2015-03-14
        • 1970-01-01
        • 1970-01-01
        • 2011-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-12
        相关资源
        最近更新 更多