IIS:Could not load file or assembly Microsoft.CodeDom.Providers.DotNetCompilerPlatform

RojerChen.2019.10.24

為了解決 Visual Studio:MsBuild 無法載入檔案或組件 Microsoft.CodeAnalysis 的問題,所以我把  Microsoft.CodeDom.Providers.DotNetCompilerPlatform 升級到 1.0.4 版本後,只不過沒想到升級之後遇到了另外的問題:

  1. 網站發行會有問題

    我的發布設定檔 pubxml 有下面這一段,如果把下面這一段移除就可以正常發行。

    <PrecompileBeforePublish>True</PrecompileBeforePublish>
  2. 部屬到 IIS 上會出錯
Could not load file or assembly 'Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
部屬到 IIS 上會出錯這個問題對我來說就比較麻煩了,因為 Web 要部屬到客戶端,我可是沒多大權限去做調整,結果查了一下發現到把 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 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=\&quot;Web\&quot; /optionInfer+" /> 
</compilers> 
</system.codedom>

現階段來說這樣就可以解決我的問題了,至於有甚麼影響就後續再來觀察。

參考資料:

https://www.it-swarm.net/zh/iis/%E6%97%A0%E6%B3%95%E5%9C%A8iis7%E4%B8%8A%E6%89%BE%E5%88%B0codedom-provider/823464748/

https://stackoverflow.com/questions/20545224/web-application-build-error-the-codedom-provider-type-microsoft-visualc-cppcode/20963170#20963170

    Blogger Comment

0 意見: