c# - 缺少 System.web.mvc

标签 c# asp.net .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。

我需要的是一种改变我构建和运行方式的方法,这样我就可以构建和运行,而不管这两个 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 获取最新版本的 MVC3。在 Dev Studio 中打开您的项目。打开 Dev Studio 底部的包管理器控制台选项卡。然后使用这个命令:

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

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

如果您使用的是旧版本的 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>

关于c# - 缺少 System.web.mvc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26535131/

相关文章:

javascript - JQGRID - 维护复选框选择状态 - 页面刷新/重定向/重新加载

javascript - asp.net mvc如何从jquery控件中保存数据

ASP.NET - 从客户端访问网页两次

c# - 在 C# 中从 Bing Map API 解析 JSON 代码

c# - WCF 在 Post 方法中给出错误 400 Bad Request

c# - 使用 MsBuild 4.0 编译的程序集是否与只有 .NET 3.5 的计算机兼容?

.net - 如何在不调用 ResourceManager.GetString() 并捕获异常的情况下确定 ResourceManager 是否包含键?

.net - 如何根据提供的属性名称订购 NHibernate 3.0 Linq 查询

c# - 在字符串上构建表达式等于

c# - 响应无效的文本框条目