System.Runtime,版本= 4.2.1.0,PublicKeyToken = b03f5f7f11d50a3a具有比引用程序集更高的版本

时间:2018-11-20 22:52:39

标签: asp.net-core .net-core startup .net-core-2.0 .net-core-2.1

我将ASP.NET CORE应用程序从sdk .NET Core 2.0升级到了.NET Core 2.1。 我可以在本地主机中运行该解决方案,但将其部署到另一台服务器时会出现异常。而且下面是例外。 到目前为止,我为解决该问题所采取的步骤如下,在我所做的所有修改中都抛出了相同的错误,似乎没有任何效果。 有人对如何解决这个问题有什么建议吗?

我已经完成的步骤:

  1. 修改项目设置

     <PropertyGroup>
        <TargetFramework>netcoreapp2.1</TargetFramework>
        <Platforms>AnyCPU;x64</Platforms>
        <RuntimeFrameworkVersion>2.1.0</RuntimeFrameworkVersion>
        <UseNETCoreGenerator>true</UseNETCoreGenerator>
        <RazorCompileOnBuild>true</RazorCompileOnBuild>
      </PropertyGroup>
    
  2. 我还在web.config中添加了绑定重定向

    assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"
    bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.1.0" 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.1.0" />
      </dependentAssembly>
    </assemblyBinding>
    
  3. 在服务器上安装.net core 2.1

  4. 我还删除了.vs文件夹并关闭了Visual Studio,然后再次将其打开。

例外:

  

Microsoft.AspNetCore.Mvc.Razor.Compilation.CompilationFailedException:发生一个或多个编译失败:错误CS1705:程序集版本= 1.0.0.0,区域性=中性,PublicKeyToken =空'使用'System.Runtime,版本= 4.2。 1.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a,其版本高于引用程序集“ System.Runtime”,标识为“ System.Runtime,Version = 4.2.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”

1 个答案:

答案 0 :(得分:0)

我有同样的问题。当我从解决方案中将Views文件夹添加到publish文件夹时,问题就消失了。由于某些原因,Razor要求这些源文件必须在服务器中并以最新版本存在,即使它也将它们编译为.dll。因此,确实很奇怪,Views文件夹在发布过程中不会自动复制。

我亲自建立了这样的交汇处
junction "MyProject\bin\Release\netcoreapp2.1\linux-x64\publish\Views" "MyProject\Views"

或者,禁用以下行可能会有所帮助(未经测试,但此问题似乎相关,因为在早期版本的Net.Core中没有Razor编译)。

<RazorCompileOnBuild>true</RazorCompileOnBuild>

<RazorCompileOnBuild>false</RazorCompileOnBuild>