【问题标题】:Windows update caused MVC3 and MVC4 stop workingWindows 更新导致 MVC3 和 MVC4 停止工作
【发布时间】:2014-12-11 03:45:09
【问题描述】:

我是唯一一个在 10 月 15 日安装了 Windows Update (8.1) 的人,但由于这个警告,MVC 突然停止工作?

警告 1 无法解析此引用。找不到程序集“System.Web.Mvc,Version=4.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35,processorArchitecture=MSIL”。检查以确保该程序集存在于磁盘上。如果您的代码需要此引用,您可能会遇到编译错误。

似乎此 Windows 更新安装了版本号为 4.0.0.1 的较新版本的 MVC,并从程序文件夹中删除了旧版本。

有人知道如何在不为每个项目抓取的情况下解决此问题吗?

【问题讨论】:

标签: .net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 windows-update


【解决方案1】:

最好的解决方案是将 DLL 更新到版本 4.0.0.1。 尝试使用 nuget:

Install-Package Microsoft.AspNet.Mvc -Version 4.0.40804 -Project <your project name>

这会自动更新

  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.1" />
  </dependentAssembly>

您只需在以下位置手动编辑 System.Web.Mvc 版本:

<compilation debug="true" targetFramework="4.0">
  <assemblies>
    <add assembly="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

【讨论】:

  • 是的,只需将 GAC 引用替换为 NuGet 引用即可。为我们工作。
  • 就此事阅读Microsoft's blog。 (感谢e4rthdog 链接到此,只是评论以获得更多可见性)
  • 知道为什么,在完成上述操作后,我收到一大堆警告:“ASPNETCOMPILER : 警告 CS1702: Assuming assembly reference 'System.Web.Mvc, Version=4.0.0.0, Culture=中性,PublicKeyToken=31bf3856ad364e35' 匹配 'System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35',您可能需要提供运行时策略”?
  • @Farinha,我也有同样的警告。我不能让他们离开。这些警告会破坏构建性能。您找到解决此问题的方法了吗?
  • 没有@StefanHa,还没有找到解决办法。我注意到在整个应用程序中,在 Views 文件夹内的 Web.config 文件中有大量对 4.0.0.0 的引用,但即使在手动更改所有这些之后,警告仍然存在。
【解决方案2】:

我们必须手动触摸每个 .csproj 以将版本从 4.0.0.0 更新到 4.0.0.1 以继续构建。好痛。

新的参考应该是这样的:

<Reference Include="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />

【讨论】:

  • 请注意,MVC 3.0 需要进行相同的更改,引用应为“3.0.0.1”以使其再次工作。
  • 在我的情况下这是必需的,并且还需要表明“特定版本”是“真”
【解决方案3】:

更新后遇到同样的问题:

Microsoft ASP.NET MVC 4.0 安全更新 (KB2993928)
http://support.microsoft.com/kb/2993928

但仅适用于引用 System.Web.Mvc 的项目,而不是通过包安装。

我的同事没有安装 Microsoft ASP.NET MVC 4.0 Runtime 也没有收到更新,没有问题,仍然引用 4.0.0.0,而不是 4.0.0.1

我手动更改了对 4.0.0.1 的引用,签入后,我的同事仍然可以使用对 4.0.0.0 的引用进行构建。
(适用于 Win7 Pro SP1、VS2013 Pro Update 3)

【讨论】:

    【解决方案4】:

    请看这篇博客,推荐的方式是更新对应的NuGet包:

    http://blogs.msdn.com/b/webdev/archive/2014/10/16/microsoft-asp-net-mvc-security-update-broke-my-build.aspx

    引用:

    可以通过实施以下方法之一解决该问题 解决方案:

    1. (首选)从 NuGet 库安装 Microsoft.AspNet.Mvc(这将在您的 web.config 中安装绑定重定向)。你可以做 这来自 NuGet 包管理器或 Visual 中的 NuGet 控制台 工作室:

      安装包 Microsoft.AspNet.Mvc -Version -Project PROJECTNAME

      MVC 4 版本:4.0.40804.0

      MVC 3 版本:3.0.50813.1

    2. 手动更新对 System.Web.MVC.dll 的引用(不要使用 GAC 中的那个)。

      尝试添加参考 -> 程序集 -> 扩展对话框。

    【讨论】:

      【解决方案5】:

      看到这个:Microsoft Asp.Net MVC Security Update MS14-059 broke my build!MS 写了博客,因为它显然带来了很多混乱

      【讨论】:

        【解决方案6】:

        对于 web 项目,您可能还需要更新 web.config 中的配置:

          <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
            <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.1"/>
          </dependentAssembly>
        

        【讨论】:

          【解决方案7】:

          您需要更改解决方案中对 System.Web.Mvc 的所有引用。 只需删除它们并添加新的 4.0.0.1 版本即可。

          同样在属性中将copy local改为true。

          并在 web.config 中添加 assambly 绑定以指向新版本的 mvc:

              <runtime>
                  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
                      <dependentAssembly>
                          <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                          <bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.1" />
                      </dependentAssembly>
                  </assemblyBinding>
              </runtime>
          

          【讨论】:

          【解决方案8】:

          好的,

          对我来说这是两个简单的步骤:

          首先我将所有对 System.Web.Mvc 的引用从 4.0.0.0 更改为 4.0.0.1,

          然后我必须转到 System.Web.Mvc 的属性(可能是因为我已经删除并重新添加了它)并将本地副本更改为 true。

          希望这对某人有帮助。

          【讨论】:

            【解决方案9】:

            如果您在尝试@Krzysztof 解决方案或上述任何其他答案后仍然遇到相同的错误,则可能适合您的一种解决方法是卸载 MVC Runtime 4.0强>

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-11-22
              相关资源
              最近更新 更多