原文
罪魁禍首是Microsoft.Net.Compilers
包,用於在您的項目中支持現代C#語法/功能(版本6.0,7.0),特別是在Razor視圖中。根據其版本的不同,該軟件包需要在相關機器上安裝安裝的完整.NET框架的特定最低版本。
例如,2.2.0包需要.NET 4.6+。即使你的項目的目標是.NET 4.5.2,你可能在你的開發機器上安裝了最新的.NET,而且一切都很順利。遠程部署機器只安裝了.NET 4.5.2,當您的ASP.NET應用程序嘗試在運行時編譯資源(例如視圖)時,您會收到錯誤-2146232576
。
您的選擇:
- 如果您確實需要使用新望C#功能在您的項目 - 安裝最新的.NET Framework到遠程計算機。
- 如果您對僅提供更多或更少的現代C#功能感到滿意 - 將Microsoft.Net.Compilers軟件包降級爲僅需要您的遠程機器上的框架的版本。例如,版本1.3.2只需要.NET 4.5。
- 如果你並不需要在所有上述功能,只需從你的項目中刪除
Microsoft.Net.Compilers
和Microsoft.CodeDom.Providers.DotNetCompilerPlatform
(羅斯林CodeDom中提供)封裝。
解决方案:
解決方法:
我面臨這個問題升級後一些NuGets並通過下面的步驟來解決。步驟1:從NuGet Package Console
移除這些的NuGet包
PM> Uninstall-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
PM> Uninstall-package Microsoft.Net.Compilers
步驟2:後:在Web.config
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"></compiler>
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+"></compiler>
</compilers>
</system.codedom>
再发布就可以了。
参考链接