【问题标题】:MVC 3 asking for System.Web version 2.0.0.0 (System.Web.UI.Controls): Is this a compiler bug?MVC 3 要求 System.Web 版本 2.0.0.0 (System.Web.UI.Controls):这是编译器错误吗?
【发布时间】:2011-07-04 12:54:57
【问题描述】:

设置:

我正在开发的 MVC 3 应用程序突然无法编译。我收到以下错误:

“System.Web.UI.Control”类型是在未引用的程序集中定义的。您必须添加对程序集“System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”的引用。

这显然很荒谬:我的机器上有 System.Web 版本 4.0.0.0。

如果我删除相关行的代码,错误只会移动到下一行。

Visual Studio 一直在抱怨某个插件,例如,如果我尝试转到定义,VS 会抱怨并询问我是否要删除该插件。

问题:

VS 被破坏了吗?

我是否需要重新安装整个 bally 的东西(VS 2010、电动工具、MVC 3 和他知道还有什么)?

编辑:

由于找到了原因并因此解决了问题,我已将问题重命名为其他有相同或类似问题的人更容易找到的名称。

尽我所能,我的回答告诉了如何解决这个问题。但如果有人能对这个问题提出一个完整的解释,那么我很乐意将其标记为答案。

【问题讨论】:

    标签: asp.net-mvc visual-studio-2010 asp.net-mvc-3


    【解决方案1】:

    好的,我已经深入了解了。

    问题是我使用了一些字符串扩展。这些都装在图书馆里,很久以前写的。

    问题是由命名空间引起的。让我们称之为 WS.Extensions

    在 WS.Extensions 中,我还为普通的 asp.net 服务器控件提供了一些扩展方法,这些扩展所在的类具有 System.Web.UI 的 using 语句。

    虽然库项目中引用了相关的 dll,但这似乎会导致 MVC 3 出现问题,并且在我看来,这是一个模糊的错误。一旦你知道问题出在哪里就很明显,但不是其他的。

    我已将所有扩展移至一个新库,其中没有引用服务器控制命名空间(如 System.Web.UI)的交叉使用语句。

    我没有删除我的帖子,因为我认为这个问题可能会发生在其他人从服务器控件的恐惧转向 MVC 的过程中。

    附录:

    这个错误的讨厌之处在于它显示为编译器错误,其中“问题”所在的特定行。注释掉这一行只是将编译器抱怨的行移到一行。此外,该行与使用扩展的行完全无关。所以没有任何线索。

    因此,我认为这是一个编译器错误,与 ASP.NET MVC、3 或其他无关。

    这是由于引用(使用)来自 ASP.NET MVC 3 应用程序的命名空间,而该命名空间包含为 ASP.NET 服务器控件编写的代码。

    我在这个问题上浪费了半天时间,所以希望这对其他人有所帮助。结果,已重命名问题。

    【讨论】:

    • 编译器错误听起来与 ASP.NET MVC 完全无关。
    • 这发生在我的一个项目中,该项目与 MVC 无关,但确实引用了一个使用 System.Web 的项目。出于好奇,你的项目是用什么语言编写的?我从 C# 项目中引用了一个 VB.NET 项目。
    【解决方案2】:

    我遇到了同样的问题。我有几个项目使用了不同版本的 MVC,所以我收到了这种错误。

    有时在将项目转换为 MVC 3 后清除 ASP.NET 缓存也很好。这也很有用。

    【讨论】:

    • 杰克:我认为你的问题是不同的,因为你是专门从不同版本的已安装 dll 调用代码。这个问题是由从未使用过的代码引起的,并且编译器会产生晦涩和错误的错误消息,因此很难理解问题所在。
    猜你喜欢
    • 1970-01-01
    • 2014-07-01
    • 2022-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-24
    • 1970-01-01
    相关资源
    最近更新 更多