【问题标题】:Visual Studio building ASP.NET MVC Web with old dll referenceVisual Studio 使用旧 dll 参考构建 ASP.NET MVC Web
【发布时间】: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


    【解决方案1】:

    如果您在项目中的引用是正确的版本,要检查的一件事是 Copy Local 属性。这是决定引用的dll是否复制到bin文件夹的设置。

    要检查,请在解决方案资源管理器中展开 References 并右键单击引用 System.Web.Mvc 并单击属性。确保Copy Local = True

    【讨论】:

      猜你喜欢
      • 2018-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-29
      • 1970-01-01
      • 2016-02-18
      • 2016-12-30
      • 2019-07-25
      相关资源
      最近更新 更多