我有一个ASP.NET MVC4项目,该项目在VS2010中编译良好.出于部署目的,我运行了一个Nant脚本,试图使用aspnet_编译器预编译网站.但我一直在系统中遇到程序集引用问题.网状物网页

错误CS1705:程序集"System.Web.Mvc,版本=4.0.0.0,区域性=中性,PublicKeyToken=31bf3856ad364e35"使用的是"System.Web.WebPages,版本=2.0.0.0,区域性=中性,PublicKeyToken=31bf3856ad364e35",它的版本高于引用的程序集"System.Web.WebPages,版本=1.0.0.0,区域性=中性,PublicKeyToken=31bf3856ad364e35"

我的web中还有以下程序集绑定.配置:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
        </dependentAssembly>
        <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
        </dependentAssembly>
        <dependentAssembly>
            <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
        </dependentAssembly>
        <dependentAssembly>
            <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
        </dependentAssembly>
    </assemblyBinding>
</runtime>

我的csproj有以下引用:

<Reference Include="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
  <Private>True</Private>
 <HintPath>..\packages\AspNetWebPages.Core.2.0.20126.16343\lib\net40\System.Web.WebPages.dll</HintPath>
</Reference>

推荐答案

我通过在Web中显式引用2.0程序集解决了这个问题.配置.我想出于某种原因,ASP.NET编译器(在我运行MvcBuildViews的情况下)首先使用旧的1.0程序集(如果找到的话).

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <!-- … -->
  <system.web>
    <!-- … -->
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
        <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
      </assemblies>
    </compilation>
    <!-- … -->
  </system.web>
  <!-- … -->
</configuration>

顺便说一句:这个问题似乎是我添加第三方ASP后第一次出现的.NET MVC 3.0组件.该组件可以通过程序集绑定正常工作,但这可能是ASP.NET编译器首先try 加载1.0网页.

Asp.net相关问答推荐

无法在Microsoft Windows Server 2016(数据中心)上运行.NET可移植性分析器

更新剃须刀页面中图表的值

Stimulsoft 没有在智能手机中显示正确的 pdf 字体

.Net Framework:w3wp.exe 中的异常

web.config 部分的单独配置文件

创建一个供 ASP.NET 应用程序中的所有线程使用的静态 Regex 对象是否有效?

AppendHeader 是否与 AddHeader 完全相同?

ASP.NET 控件无法在 Visual Studio 2008 的代码隐藏中引用

如何在 FileUpload 控件中限制文件类型

c# - 如何从列表中获取值的总和?

是否有用于 Asp.net 标记的#IF DEBUG?

如何在 Visual Studio 2017 中使用 NPM 并安装包?

发布发布事件

ASP.NET URL 重写

如何验证文件上传的文件类型?

*.csproj 中的 usevshostingprocess 是什么?

Web.Config 中的 Assemblies node 的用途是什么?

如何在 ASP.NET MVC 中设置时区?

带有模型的 ASP.NET MVC 重定向

ASP.NET 发布try 复制不存在的文件