System.Web.Razor.dll未复制到bin文件夹

时间:2015-12-07 18:23:41

标签: c# .net asp.net-mvc asp.net-mvc-5

问题

我们正在尝试升级到.NET 4.6的ASP.Net 5.2.3项目。

运行时,我们收到错误消息

  

无法加载文件或程序集&System; Web.Razor,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其中一个依赖项。系统找不到指定的文件。

请注意,我们从NuGet安装了Microsoft.AspNet.Razor版本3.2.3,但错误消息是指版本3.0.0.0。

哈克

现在如果我手动复制

  

包\ Microsoft.AspNet.Razor.3.2.3 \ lib中\ net45 \ System.Web.Razor.dll

  

TheWebProject \ bin中

项目运行得很好。

GAC

请注意

中有两个条目
  

C:\的Windows \ Microsoft.NET \组件\ GAC_MSIL \ System.Web.Razor

     

v4.0_1.0.0.0__31bf3856ad364e35

     

v4.0_2.0.0.0__31bf3856ad364e35

我知道present in the GAC ignore CopyLocal=True的DLL。但是,我不明白为什么该项目无法解析GAC的引用,也不愿意将使用NuGet引用的版本复制到bin文件夹。

的web.config

我们在web.config中有以下绑定重定向,大概是由NuGet安装程序放在那里

  <dependentAssembly>
    <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
  </dependentAssembly>

我们也试过设置newVersion =&#34; 3.2.3.0&#34;匹配NuGet包管理器中显示的版本。当我们将这两者都改为

<bindingRedirect oldVersion="0.0.0.0-3.2.3.0" newVersion="3.2.3.0" />

我们得到的错误略有不同

  

无法加载文件或程序集System.Web.WebPages.Razor&#39;或其中一个依赖项。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)

问题

如何设置项目引用来解决此问题?

3 个答案:

答案 0 :(得分:0)

尝试右键单击参考列表中的参考并设置&#34;复制本地&#34; to&#34; True&#34;。

答案 1 :(得分:0)

我怀疑,您的配置强制它为3.0.0.0。试试这个:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
        <bindingRedirect oldVersion="3.0.0.0" newVersion="3.2.3.0" />
      </dependentAssembly>      
    </assemblyBinding>
  </runtime>

答案 2 :(得分:0)

您需要将程序集重定向添加到* .config文件中。打开包管理器控制台并输入以下命令:Add-BindingRedirect [-ProjectName]

参考:http://weblog.west-wind.com/posts/2014/Nov/29/Updating-Assembly-Redirects-with-NuGethttps://docs.nuget.org/consume/package-manager-console-powershell-reference