缺少System.web.mvc


89

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

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

当我在未运行安全更新的构建计算机上打开解决方案文件时,打开“引用”->“ 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,因此这似乎不太正确。无论如何,我还是尝试了一下,结果却丢失了六个参考。

当我在构建计算机上查看“ C:\ Program Files \ Microsoft ASP.NET \ ASP.NET MVC 3 \ Assemblies \ System.Web.Mvc.dll”的属性时,看到的版本是3.0.0.0。

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

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

有想法吗?

我尝试过的没有用

第一次尝试-如果缺少程序集,请添加它。我删除了旧的丢失的参考。然后,将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软件包更新为最新版本(当然可以)?
Silvermind 2014年

1
我想知道您是否遇到了MS14-059更新错误 ……
Steven V

1
该网络应用没有任何nuget软件包。是的,这是MS14-059错误。
杰夫·德格

我遇到了类似的问题,尽管我改用nuget软件包和版本4。它可以很好地编译,并且都可以运行,但是我想摆脱这20多个编译警告。
Farinha 2014年

Answers:


141

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

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

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

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

安装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>

1
Badabing !!!! 花了几个小时的时间...很简单,可以在Nuget pm中安装该版本....非常感谢!!!
Squ1rr3lz 2015年

是的,Nuget可与Visual Studio 2010一起使用。您只需通过扩展管理器进行安装。在工具菜单下。

2
安装软件包Microsoft.AspNet.Mvc将解决此问题。我们真的不需要提及版本号
sujay kodamala

2
@sujaykodamala如果要安装最新的MVC3而不是MVC5(软件包的最新版本),则设置版本号很重要。

Install-Package Microsoft.AspNet.Mvc -Project ProjectName -Reinstall是更明确的名称,会安装该项目的版本,并阻止其接触其他项目(如果需要)。
Mike E

30

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

在安装了MVC 3的系统中,哪里可以找到System.Web.MVC dll?


谢谢,这帮助我在2018年打开了针对VS2010的项目:)
Aamol

23

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

在此处输入图片说明

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

或使用Nuget命令

Install-Package Microsoft.AspNet.Mvc -Version 3.0.50813.1

1
这解决了我切换到新PC后出现的问题,该问题有一个引用ASP.NET MVC 4 dll的项目,但尚未在新计算机上安装。
clovola

3

在VS 2017中,我清理了解决方案并对其进行了重建并对其进行了修复


2

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

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


1

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

解决的办法是在“添加参考”对话框的“部件”下选择“扩展”。


0

就我而言,我在项目中拥有所有适当的参考。我发现通过构建解决方案可以自动还原nuget软件包。


0

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

解决此问题的方法是将其从引用中删除并添加引用:在“程序集”下选择“ 扩展 ”,您可以在其中找到并添加System.Web.Mvc。

(我随nuget软件包一起添加的其他程序集。)


0

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


0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.