我将ASP.NET CORE应用程序从sdk .NET Core 2.0升级到了.NET Core 2.1。 我可以在本地主机中运行该解决方案,但将其部署到另一台服务器时会出现异常。而且下面是例外。 到目前为止,我为解决该问题所采取的步骤如下,在我所做的所有修改中都抛出了相同的错误,似乎没有任何效果。 有人对如何解决这个问题有什么建议吗?
我已经完成的步骤:
修改项目设置
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<Platforms>AnyCPU;x64</Platforms>
<RuntimeFrameworkVersion>2.1.0</RuntimeFrameworkVersion>
<UseNETCoreGenerator>true</UseNETCoreGenerator>
<RazorCompileOnBuild>true</RazorCompileOnBuild>
</PropertyGroup>
我还在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>
在服务器上安装.net core 2.1
例外:
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”
答案 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>