【问题标题】:System.web.mvc missingSystem.web.mvc 丢失
【发布时间】:2014-12-19 12:52:56
【问题描述】:

我们有一个旧的 ASP.NET MVC 3 Web 应用程序,在 VS2010 中构建,自上周的安全更新以来无法编译。

问题在于对 System.Web.Mvc.dll 的引用已损坏。

当我在未运行安全更新的构建机器上打开解决方案文件并打开 References->System.Web.MVC 的属性对话框时,它看起来很好。

路径是 C:\Program Files\Microsoft ASP.NET\ASP.NET MVC 3\Assemblies\System.Web.Mvc.dll 版本是 3.0.0.0

但是当我在运行安全更新的开发机器上打开解决方案文件时,References->System.Web.MVC 被标记为丢失。如果我删除它,并尝试使用 VS2010 的添加引用对话框将其添加回来,它不会显示。

在网上闲逛后,我提出了一些建议,涉及使用 NuGet 更新 MVC。在我们的 VS2010 项目中,我们没有使用 NuGet,因此对于这种情况,这似乎不太正确。无论如何我都尝试过,但最终还是缺少了六份参考资料。

当我在 Windows 资源管理器中查看“C:\Program Files\Microsoft ASP.NET\ASP.NET MVC 3\Assemblies\System.Web.Mvc.dll”的属性时,在构建机器上我看到的是 3.0 版.0.0.

当我查看开发机器上的属性时,我看到的是版本 3.0.50813.1。

我需要的是一种改变构建和运行方式的方法,以便无论这两个 DLL 中的哪一个安装在 .NET 3.0 框架中,我都可以构建和运行。

想法?

我试过的没有用

第一次尝试 - 如果缺少程序集,请添加它。我删除了旧的缺失参考。然后我将 DLL 从“ASP.NET MVC3\Assemblies”文件夹复制到我项目的一个文件夹中。将其设置为“始终复制”,并将其添加为参考。

这样,该项目将在 VS2010 中编译,但是当我尝试使用 aspnet_compiler 预编译页面时,我收到了警告:

(0): warning CS1702: Assuming assembly reference 'System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' matches 'System.Web.Mvc, Version=3.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35', you may need to supply runtime policy

到目前为止,我已经能够避免理解运行时策略,但我尝试在 web.config 中添加它:

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

又试了一次,得到了同样的警告。

我的问题是 - 我还有问题吗?还是我会解决它,尽管有警告?

【问题讨论】:

  • 您是否尝试过将所有 nuget 包更新到最新版本(当然在可能的情况下)?
  • 不知道你是不是遇到the MS14-059 update bug...
  • 网络应用没有任何 nuget 包。是的,这是 MS14-059 错误。
  • 我遇到了同样的问题,尽管我使用的是 nuget 包和版本 4。它编译得很好,而且一切正常,但是我想摆脱这 20 多个编译警告。

标签: c# asp.net .net asp.net-mvc


【解决方案1】:

通过 NuGet 获取最新版本的 MVC3。在 Dev Studio 中打开您的项目。打开 Dev Studio 底部的 Package Manager Console 选项卡。然后使用这个命令:

PM> Install-Package Microsoft.AspNet.Mvc -Version 3.0.50813.1

如果您单击“-Version”后的 tab 键,您将获得所有可用版本的列表。

如果您有旧版本的 NuGet,您可能会收到一条错误消息,指示您必须对其进行升级。如果是这样,请打开工具-> 扩展管理器以安装最新版本的 NuGet。请注意,您需要以管理员身份运行 Dev Studio,然后才能安装 NuGet。

安装 MVC3 应该会更新项目中的 Web.config。

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

【讨论】:

  • 八大饼!!!在这上面花了几个小时......很简单,可以在 Nuget pm 中安装版本......非常感谢!!!
  • 是的,Nuget 可与 Visual Studio 2010 一起使用。您只需通过扩展管理器安装它。在工具菜单下。
  • Install-Package Microsoft.AspNet.Mvc 将解决此问题。我们真的不需要提及版本号
  • @sujaykodamala 如果您想安装最新的 MVC3 而不是 MVC5(软件包的最新版本),则设置版本号很重要。
  • Install-Package Microsoft.AspNet.Mvc -Project ProjectName -Reinstall 更明确,安装您为该项目拥有的版本并防止它接触其他项目(如果需要)。
【解决方案2】:

MVC 5

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Stack 5\Packages\Microsoft.AspNet.Mvc.5.0.0\lib\net45\System.Web.Mvc.dll

MVC 4

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\System.Web.Mvc.dll

MVC 3

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 3\Assemblies\System.Web.Mvc.dll

MVC 2

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 2\Assemblies\System.Web.Mvc.dll

Where can I find System.Web.MVC dll in a system where MVC 3 is installed?

【讨论】:

  • 感谢这帮助我在 2018 年打开了针对 VS2010 的项目 :)
【解决方案3】:

解决此问题的最简单方法是从 Web 平台安装程序安装 ASP.NET MVC 3。

http://www.microsoft.com/web/downloads/

或者使用 Nuget 命令

Install-Package Microsoft.AspNet.Mvc -Version 3.0.50813.1

【讨论】:

  • 这解决了我在切换到新电脑后出现的问题,并且有一个项目引用了我尚未在新机器上安装的 ASP.NET MVC 4 dll。
【解决方案4】:

在 VS 2017 中,我清理了解决方案并重建了它并修复了它

【讨论】:

    【解决方案5】:

    我有同样的情况:Visual Studio 2010,没有安装 NuGet,一个使用 System.Web.Mvc 版本 3 的 ASP.NET 应用程序。

    对我有用的是设置每个使用 System.Web.Mvc 的 C# 项目,转到解决方案资源管理器中的引用,并在 System.Web.Mvc 上设置属性,将 Copy Local 设置为 true,并设置特定版本为 false - 最后一个导致 Version 字段显示该机器上的当前版本。

    【讨论】:

      【解决方案6】:

      以防万一有人在他得到同样错误的位置。在我的情况下,降级 Microsoft.AspNet.Mvc 然后再次升级它会有所帮助。安装 Glimpse 并将其删除后,我遇到了这个问题。 System.Web.Mvc 以某种方式引用错误,清理解决方案或重建它在我的情况下不起作用。如果以上答案都不适合您,请尝试一下。

      【讨论】:

        【解决方案7】:

        在vs2017中遇到这个问题,我已经通过nuget获得了MVC,但是System.Web.Mvc没有出现在“添加引用”下的“程序集”列表中。

        解决方案是在“添加引用”对话框中选择“程序集”下的“扩展”。

        【讨论】:

          【解决方案8】:

          就我而言,我的项目中有所有正确的引用。我发现通过构建解决方案可以自动恢复 nuget 包。

          【讨论】:

            【解决方案9】:

            在 vs2015 中打开的示例 mvcmusicstore.codeplex.com 缺少一些引用,其中一个是 System.web.mvc。

            解决此问题的方法是从参考中删除它并添加参考: 选择Assemblies下的Extensions,在那里你可以找到并添加System.Web.Mvc。

            (我使用 nuget 包添加的其他程序集。)

            【讨论】:

              【解决方案10】:

              从 ./packages/Microsoft.AspNet.Mvc.[version]/lib/net45/System.Web.Mvc.dll 再次添加引用

              【讨论】:

                猜你喜欢
                • 2012-01-29
                • 1970-01-01
                • 2016-05-21
                • 1970-01-01
                • 2017-02-23
                • 1970-01-01
                • 2016-08-31
                • 2023-03-31
                • 2018-12-03
                相关资源
                最近更新 更多