Не удалось загрузить файл или сборку Microsoft.CodeAnalysis
У меня есть веб-проект, который я пытаюсь выполнить, но когда сервер пытается его скомпилировать, я получаю следующую ошибку:
Необработанное исключение: System.IO.FileLoadException: не удалось загрузить файл или сборка "Microsoft.CodeAnalysis, Version = 1.1.0.0, Culture = нейтраль, PublicKeyToken = 31bf3856ad364e35 'или один из его зависимостей. Установленное определение манифеста сборки не сопоставить ссылку на сборку. (Исключение из HRESULT: 0x80131040) --- > System.IO.FileLoadException: Не удалось загрузить файл или сборку" Microsoft.CodeAnalysis, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 'или один из его зависимостей. Установленное определение манифеста сборки не сопоставить ссылку на сборку. (Исключение из HRESULT: 0x80131040)
--- Конец внутренней стеки стека исключений - в 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>
К сожалению, я все равно получаю ту же ошибку. Что я делаю неправильно?
Ответы
Ответ 1
Я понял это сам. Для всех, кто это читал, проблема заключалась в том, что пакет Nuget Microsoft.CodeDom.Providers.DotNetCompilerPlatform
(который также содержит пакет CodeAnalysis) был неправильной версией. Я создал новый веб-проект, сразу же обновил оскорбительный пакет Nuget, и проблема была решена.
Ответ 2
Я решил эту проблему, но удостоверился, что номера версий сборок в моем web.config были правильными.
Edit:
Я тоже попал в эту проблему, и некоторые могут задаться вопросом, как Web.Config может стать неправильным. В моем случае я использую Web.Config Transforms, поэтому файл Web.Config перезаписывается:
![введите описание изображения здесь]()
Изменение номера версии в компиляторе 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
Ответ 3
Другое возможное исправление (по крайней мере для Visual Studio 2015):
Получите последнее обновление Visual Studio.
Вы можете проверить наличие обновлений, перейдя в Tools/Extensions and Updates/Updates
То же, что и этот Q/A: Visual Studio 2015: быстрые действия больше не работают, ошибка: не удалось загрузить файл или сборку Microsoft.CodeAnalysis
Ответ 4
Если ни один из указанных вариантов не работает, перейдите к этому вопросу. В основном, вы регистрируете Microsoft.CodeAnalysis.dll для GAC
Не удалось загрузить файл или сборку "Microsoft.CodeAnalysis, version = 1.3.1.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35" или один из его зависимостей
Ответ 5
У меня была эта проблема сегодня, когда я выполнял обновление Umbraco v7.13.0, простое обновление следующего пакета устранило мою проблему, это, очевидно, общая проблема с такими вещами, как обновления Umbraco.
Update-Package -Reinstall Microsoft.CodeAnalysis.CSharp
Ответ 6
та же проблема, я установил версию 2.0.1 и скопировал часть web.config из другого проекта, в котором есть 2.0.0, снизил версию до 2.0.0, и теперь она работает нормально
обновлю обратно до 2.0.1 после проверки что все работает
Ответ 7
Щелкните правой кнопкой мыши свой проект >> Управление диспетчером пакетов Nuget для решения >> Нажмите "Обновления" >> Обновите "Microsoft.CodeDom.Providers.DotNetCompilerPlatform" >> и снова запустите проект.