2016-03-04 32 views
19

Mam webowy staram się zorganizować, ale gdy serwer próbuje go skompilować, pojawia się następujący błąd:Nie można załadować pliku lub zestawu 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)

więc serwer ma starszą wersja CodeAnalysis niż mój projekt. Więc spróbujmy przeprowadzić wiążące przekierowanie!

<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> 

Niestety, wciąż mam ten sam błąd. Co ja robię źle?

+0

Podobny problem z roztworu można znaleźć tutaj: https://stackoverflow.com/questions/40235284/asp-net-mvc- razor-view-cs1525-invalid-expression-term – Matt

Odpowiedz

25

Sam to wymyśliłem. Dla każdego, kto to czyta, problemem było to, że pakiet Nuget Microsoft.CodeDom.Providers.DotNetCompilerPlatform (który zawiera również pakiet CodeAnalysis) był nieprawidłową wersją. Stworzyłem nowy projekt internetowy, natychmiast zaktualizowałem obraźliwy pakiet Nuget i problem został rozwiązany.

+6

Alternatywnie, możesz po prostu usunąć folder pakietów w eksploratorze, a następnie prawo rozwiązanie w Visual Studio i kliknąć "Przywróć pakiety NuGet". –

+0

Jeśli tylko powiedziałeś mi o tym, zanim spędzisz 3 godziny próbując naprawić ten błąd. :-) – ohyeah

+1

Dziękuję wam obojgu - zaoszczędziło mi to wiele czasu. – tdracz

4

Rozwiązałem ten problem, ale upewniałem się, że numery wersji złożeń w moim pliku web.config były poprawne.

Edit:

uderzę tego problemu, jak również i niektórzy mogą się zastanawiać, w jaki sposób może stać Web.Config nieprawidłowe. W moim przypadku używam web.config transformacje więc plik web.config zostanie nadpisane: enter image description here

Zmiana numeru wersji w Web.Configs kompilatora (w Web.Template.Config) do liczby meczów wersję Nuget robi rozwiązać problem:

<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.5.0 
Powiązane problemy