System.web.mvc缺失

Jef*_*ege 81 .net c# asp.net asp.net-mvc

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

问题是对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.

我需要的是一种改变我构建和运行方式的方法,这样我就可以构建和运行.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
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经设法避免了解运行时策略,但我尝试在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>
Run Code Online (Sandbox Code Playgroud)

再次尝试,并得到相同的警告.

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

3sp*_*pot 129

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

PM> Install-Package Microsoft.AspNet.Mvc -Version 3.0.50813.1
Run Code Online (Sandbox Code Playgroud)

如果在"-Version"之后单击Tab键,您将获得所有可用版本的列表.

如果你有一个旧版本的NuGet,你可能会收到一个错误,表明你必须升级它.如果是这样,请打开Tools-> Extension Manager以安装最新版本的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>
Run Code Online (Sandbox Code Playgroud)

  • 安装软件包Microsoft.AspNet.Mvc将解决此问题。我们真的不需要提及版本号 (2认同)
  • @sujaykodamala如果要安装最新的MVC3而不是MVC5(最新版本的软件包),则设置版本号很重要. (2认同)

kir*_*irk 27

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?


Md.*_*rim 21

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

在此输入图像描述

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

或者使用Nuget命令

Install-Package Microsoft.AspNet.Mvc -Version 3.0.50813.1
Run Code Online (Sandbox Code Playgroud)