2016-03-04 13 views
19

我有一個webproject我試圖主機,但在服務器嘗試編譯它,我得到以下錯誤:無法加載文件或程序集Microsoft.CodeAnalysis

Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly 'Microsoft.CodeAnalysis, Version=1.1.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) ---> System.IO.FileLoadException: Could not load file or assembly 'Microsoft.CodeAnalysis, 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)
--- End of inner exception stack trace --- at Microsoft.CodeAnalysis.CSharp.CommandLine.Program.Main(String[] args)

所以服務器有一個較舊的CodeAnalysis版本比我的項目。所以讓我們嘗試綁定重定向!

<dependentAssembly> 
    <assemblyIdentity name="Microsoft.CodeAnalysis" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-9.9.9.9" newVersion="1.0.0.0" /> 
</dependentAssembly> 

不幸的是,我仍然得到相同的錯誤。我究竟做錯了什麼?

+0

與解決類似的問題,可以在這裏找到:https://stackoverflow.com/questions/40235284/asp-net-mvc- razor-view-cs1525-invalid-expression-term – Matt

回答

25

我明白了這一點。對於閱讀此內容的任何人來說,問題是Nuget包Microsoft.CodeDom.Providers.DotNetCompilerPlatform(它也包含CodeAnalysis包)是錯誤的版本。我創建了一個新的Web項目,馬上更新了有問題的Nuget包,問題解決了。

+6

或者,你可以在資源管理器中刪除軟件包文件夾,然後在Visual Studio中解決問題,然後點擊「恢復NuGet軟件包」。 –

+0

如果只有你告訴我,我花了3個小時試圖解決這個錯誤。 :-) – ohyeah

+1

謝謝你們倆 - 它爲我節省了很多時間。 – tdracz

4

我解決了這個問題,但確保我的web.config中的程序集的版本號是正確的。

編輯:

我打了這個問題,以及有些人可能不知道Web.Config中如何能成爲不正確。在我來說,我使用的Web.Config變換所以Web.Config文件被覆蓋: enter image description here

改變Web.Configs編譯器的版本號(在Web.Template.Config)的數量的NuGet版本匹配確實解決問題:

<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.5.0 
相關問題