繁体   English   中英

System.web.mvc 丢失

[英]System.web.mvc missing

自上周的安全更新以来,我们有一个在 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

到目前为止,我已经能够设法避免理解运行时策略,但我尝试在 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 底部的 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>

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?

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

在此处输入图片说明

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

或者使用 Nuget 命令

Install-Package Microsoft.AspNet.Mvc -Version 3.0.50813.1

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

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

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

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

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

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

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

在 vs2015 中打开的示例 mvcmusicstore.codeplex.com 遗漏了一些引用,其中之一是 System.web.mvc。

对此的修复是从引用中删除它并添加一个引用:在程序集下选择扩展,您可以在那里找到并添加 System.Web.Mvc。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM