把新寫的 ASP.NET MVC 代碼發布到 阿里雲虛擬機后,報如下錯誤:
編譯器失敗,錯誤代碼為 -2146232576
參考了 iis 錯誤 -2146232576 和 asp.net mvc5本機調試正常,發布到服務器上提示編譯錯誤,編譯器失敗錯誤代碼未-2146232576 ,都是通過升級 .NET Framework 到 4.6 解決的,但是阿里雲的共享雲虛擬主機經過我的測試,最高支持到 4.5.1。
不能升級 .NET Framework,那就只能使用低版本的包了。根據 iis 錯誤 -2146232576 中的說法,是由於 Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll 導致的。但其實該包從 1.0.4 ~ 1.0.8 都是同時支持 .NET Framework 4.5 和 .NET Framework 4.6 的。
- .NET Framework 4.5 時 Microsoft.Net.Compilers (>= 1.3.2)
- .NET Framework 4.6 時 Microsoft.Net.Compilers (>= 2.4.0)
最新的 Microsoft.CodeDom.Providers.DotNetCompilerPlatform 2.0.0 倒是沒有任何依賴項,但是升級到 2.0.0 並且刪除 Microsoft.Net.Compilers 包后再發布,會報一個需要 Microsoft.Net.Compilers 包的錯誤。
重新安裝了 Microsoft.CodeDom.Providers.DotNetCompilerPlatform 1.0.8 版, 同時自動安裝了依賴的最低版本 Microsoft.Net.Compilers 1.3.2。再次發布到雲虛擬主機,就能正常訪問了。