【发布时间】:2017-12-30 18:18:12
【问题描述】:
我今天一直在努力使用 Visual Studio,但我无法让它工作。
问题是每当我尝试构建或重建我的 ASP.NET MVC Web 项目时,都会出现以下错误:
无法加载文件或程序集“System.Web.Mvc”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (HRESULT 异常:0x80131040)
我发现这个问题是在构建过程中将前面提到的 dll 文件复制到“Bin”文件夹时引起的。当我检查该文件的详细信息时,我发现与我的代码中的引用相比,它是一个次要版本(4.0.20710.0)。
我忘了说这个解决方案是由 4 个项目组成的:主项目(也就是网站)和 3 个编译成 dll 并作为区域动态添加到网站的小项目。
这是我到目前为止检查过的内容:
主项目 web.config(片段)
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
</dependentAssembly>
主项目 packages.config(片段)
<package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net45" />
主项目视图 web.config(片段)
<system.web>
<httpHandlers>
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler" />
</httpHandlers>
<!--
Enabling request validation in view pages would cause validation to occur
after the input has already been processed by the controller. By default
MVC performs request validation before a controller processes the input.
To change this behavior apply the ValidateInputAttribute to a
controller or action.
-->
<pages validateRequest="false" pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
</pages>
我还检查了我在上面提到的小项目中的相同文件,但直到现在还没有运气。让它工作的唯一方法是运行网页并从 bin 文件夹中手动删除 dll 并复制正确的版本。
我需要 Visual Studio 自动完成此操作,因为每次我在另一台计算机上签出项目时都会遇到同样的问题。
我希望你能帮助我解决这个问题。谢谢。
【问题讨论】:
标签: c# asp.net-mvc dll visual-studio-2013 build