Не вдалося завантажити файл або збірку 'Microsoft.CodeAnalysis, версія = 1.3.1.0, Культура = нейтральна, PublicKeyToken = 31bf3856ad364e35' або один із його залежностей


79

Вчора ввечері відбулось оновлення, і тепер я виявляю, що не можу зробити ctrl + '.' для пропозицій коду у VS 2015. З’являється повідомлення про помилку, в якому йдеться про таке:

Не вдалося завантажити файл або збірку 'Microsoft.CodeAnalysis, версія = 1.3.1.0, Культура = нейтральна, PublicKeyToken = 31bf3856ad364e35' або одна із залежностей. Система не може знайти вказаний файл.

Я все ще можу будувати та розробляти, але це буде дуже дратувати без цієї функції. Я визнаю це, я стає м'яким!

Хтось має пропозицію щодо виправлення цієї помилки?


1
Я отримую це сьогодні також ... Я хотів би знати, що це зламало! Наша машина збірки має однакові версії VS / C # та їх Ctrl + '.' все ще працює нормально. У нас ніколи не було DotNetCompilerPlatform в жодному з пакетів NuGet наших проектів, тому я не розумію, чому нам раптом потрібно встановити його та оновити конфігурації збірки всіх наших проектів!
System.Cats.Lol 02.03.17

Вибачте, не впевнений, чому це відбувається. Я просто спробував завантажити Microsoft.CodeDom.Providers.DotNetCompilerPlatform в інший проект, який спочатку не містив його у рішенні, і він не працював.
Капітан Америка

2
Як вказував Вільгельм Х. у VS: Tools-> Nuget Package Manager -> Package Manager Consoleа потім Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform.
Свен М.

Відповіді:


29

У мене була та сама проблема з Visual Studio 2015 Update 2, щоб вирішити проблему глобально для всіх рішень, оновіть Visual Studio 2015 Update 3 . Ось посилання: Завантажте звідси


2
Я міняю правильну відповідь на цю відповідь, оскільки моя оригінальна відповідь лише фіксувала поточне рішення, а не будь-яке інше моє рішення. На мій погляд, це виправляє проблему і є відповіддю, яку потребуватиме більшість людей при пошуку рішення цієї помилки. Дякую shopOff!
Капітан Америка

Оновлення 3 10/10 виправлення. Цікаво, коли це було представлено? Це зі мною просто почало траплятися раптово.
Кава AlbatrossCafe

1
Це не спрацювало для мене, тоді як рішення stackoverflow.com/a/42560044/581285 вирішило проблему.
Мауро Ванетті

61

Як зазначає @CaptainAmerica, рішення полягає в оновленні збірки CodeDom від NuGet. Слід зазначити, як це зробити у Visual Studio. Я знайшов рішення тут:

https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/

В основному в меню Visual Studio виберіть:

Tools-> Nuget Package Manager -> Package Manager Console

У консолі, яка з’явиться внизу Visual Studio, виконайте цю команду:

Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

12
Це вирішує проблему, але я все ще не розумію, навіщо нам взагалі додавати цей пакет. До сьогоднішнього дня, Ctrl + '.' добре працював у всіх наших рішеннях, і цього пакету у нас не було в жодному з їхніх конфігурацій NuGet. Ремонт інсталяції VS 2015 також не допоміг.
System.Cats.Lol

Дуже дякую! Це зробило це. Особлива подяка за надання команди рішення команді. Позбавив мене клопоту з читанням більше, ніж абсолютно потрібно. ;)
Свен М.

1
Це може працювати, а може і не працювати, але здається поганою ідеєю, що для роботи Intellisense / CodeAnalysis у Visual Studio, що окремі рішення потребують пакету NuGet. Оновлення до оновлення 3 працює.
Суамер

35

Якщо будь-який із варіантів не працює, ось докладний посібник для розробки цього сценарію ....

Перш за все, важлива версія. Зверніть увагу на версію, зазначену в помилці ...

Could not load file or assembly 'Microsoft.CodeAnalysis, version= 1.3.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.

Якщо ви бачите вище помилку, це означає, що вона не може знайти версію 1.3.1. Тепер створіть новий проект VS. Без переваг, це може бути просто просте консольне додаток. Тепер, як тільки шаблон проекту готовий, перейдіть до диспетчера пакетів і запустіть наступну команду з вказаною вами версією ...

Install-Package Microsoft.CodeAnalysis -Version 1.3.1

Це встановить всі пакети. Нехай завершиться. Як тільки це буде зроблено. Цей новостворений проект нам зовсім не потрібен. Ви можете видалити його повністю. Серйозно! Ви можете його видалити. Ми зробили це, тому що хотіли, щоб цей пакет був встановлений на загальносвітовому рівні. Коли ви щось встановлюєте, Nuget зберігає це також на глобальному рівні вашої машини. Шлях буде приблизно таким ...

C:\Users\<<Your Windows User>>\.nuget\packages

Ви можете пізнати свій шлях, слідуючи ...

%USERPROFILE%\.nuget\packages

Тепер ви побачите свої необхідні Microsoft.CodeAnalysis.dll у наступній папці ...

C:\Users\<<Your Windows User>>\.nuget\packages\Microsoft.CodeAnalysis.Common\1.3.1\lib\net45

Зверніть увагу, що наведений вище шлях містить номер версії (1.3.1). Якщо ваша версія інша, перегляньте цю папку версії.

Тепер, коли у вас є dll, все, що вам потрібно зробити, - це додати цю dll до GAC. Для цього вам знадобиться GacUtil.exe

Цей файл вже встановлюється разом із Visual Studio. Ви можете шукати "GacUtil" на диску C. Для мене це там, на нижньому шляху ...

C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools

Тепер запустіть командний рядок від імені адміністратора та перейдіть до поточного каталогу до вашого шляху, що містить GacUtil. Запустіть команду нижче, щоб встановити цю DLL у GAC.

gacutil
 -i C:\Users\<<You Windows User>>\.nuget\packages\Microsoft.CodeAnalysis.Common\1.3.1\lib\net45\Mi
crosoft.CodeAnalysis.dll

В основному забезпечуючи шлях до DLL, який ми встановили в усьому світі. Він покаже повідомлення про успішне встановлення.

Це все! Тепер запустіть Visual Studio знову, і ви вирішите цю проблему.


3
Це вдало для мене! Одне питання, про яке, схоже, не згадують інші відповіді - це зробити це у НОВОМУ проекті. В іншому випадку ви додаєте тонну сміття до свого розчину і, можливо, контролюєте джерело.
GilesDMiddleton

1
@GilesDMiddleton, так, дуже правда! Це справді важливий момент, якого варто дотримуватися. Microsoft.CodeAnalysis - справді величезний набір залежностей, і ви не хочете, щоб вони будь-якими способами встановлювались під вашим робочим проектом.
Друміл Бханхар,

дякую, це працює. У моїй ситуації мені довелося встановити 2 dll, і мені довелося перезапустити ПК, щоб набути чинності.
Ehsan Abidi

1
Це ідеальне рішення. Дякую тобі, чоловіче. Я додаю рядок з іншого коментаря чи запитання Add-GacAssembly [myPath] \ Microsoft.CodeAnalysis.dll. А якщо ви ще не встановили Gac, то відкрийте Powershell в режимі адміністратора та введіть Install-Module -Name Gac. Після цього ви можете перевірити, набравши Add-Gac і натиснувши вкладку, він повинен виконати команду, а потім додати свій шлях
Сахіб Хан

2
До речі, мені також потрібно встановити Microsoft.CodeAnalysis.CSharp.dll в GAC для sonarqube для аналізу проекту.
Чарлі,

11

Я знайшов цю сторінку, і внизу сторінки в розділі "Сумісність з ASP.NET" написано, що ASP.NET використовує nuget-пакет Microsoft.CodeDom.Providers.DotNetCompilerPlatform для оновлення збірок Microsoft.CodeAnalysis. Тож я оновив пакет DotNetCompilerPlatform з 1.0.0 до 1.0.3, і він знову працює! Так, життя знову добре!


У мене така сама проблема. Не могли б ви пояснити, як оновити збірки Microsoft.CodeAnalysis?
Марчелло

@Marcello Прочитайте відповідь нижче. У VS: Tools-> Nuget Package Manager -> Package Manager Consoleа потім Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform.
Свен М.

Гаразд. Я зробив це, і це вирішило проблему, але лише для конкретного рішення. Якщо я відкрию інше рішення, проблема не зникне.
Марчелло

9

Щоб вирішити цю проблему для всіх рішень, мені потрібно було встановити збірку Microsoft.CodeAnalysis.dll безпосередньо в GAC - кеш глобальних збірок .

Я отримав файл Microsoft.CodeAnalysis.dll з C: / Users / [user] /. Nuget / пакети / Microsoft.CodeAnalysis.Common / 1.3.2 / lib / portable-net45 + win8 / Microsoft.CodeAnalysis.dll .

Щоб встановити збірку на GAC, я використав сценарій PowerShell з https://github.com/LTruijens/powershell-gac .

Нарешті, мені вдалося встановити збірку на GAC за допомогою наступної команди від PowerShell:

Add-GacAssembly [myPath]\Microsoft.CodeAnalysis.dll

1
Чудова ідея, хоча я її не пробував. Можливо, це відбувається автоматично під час оновлення до оновлення 3. Але це чудове середнє рішення між переходом до оновлення 3 та виконанням цього в кожному рішенні.
Суамер

Посилання на Add-GacAssembly - це посилання на документацію, а не на сценарій. Зв’язаний проект, схоже, не містить жодних фактичних сценаріїв. Google знає, де знаходиться сценарій, але все, що він робить, - це надрукувати помилку про те, як сценарій не підписаний цифровим способом.
15ee8f99-57ff-4f92-890c-b56153

У будь-якому випадку, для тих, у кого немає дня-двох, щоб провести бої з PowerShell, gacutilу командному рядку розробника VS є. Ви можете використовувати це для встановлення вищезгаданої збірки в GAC. Це не вирішило проблему для мене.
15ee8f99-57ff-4f92-890c-b56153

@EdPlunkett, див. Github.com/LTruijens/powershell-gac/blob/master/INSTALL.md про те, як встановити модуль PowerShell
Lars Truijens

3

Я теж стикався з тим самим питанням. Моя версія Visual Studio 2015 була 2.0. Я оновив його до версії 3.

Питання вирішено !!!


2

Я вирішив проблему таким чином:

Оновіть Visual studio 2015 до оновлення 3

з меню вибрали Перегляд => Сповіщення => Visual Studio Update 3 і натиснули кнопку оновлення.


1

Я також стикався з такою ж проблемою, спробуйте встановити пакет nuget Microsoft.CodeAnalysis.CSharp . І якщо це не вирішено, перевірте версію Microsoft.Net.Compilers у вашому проекті, у мене була версія 1.0.0, яка спричиняла проблему настільки оновленого Microsoft.Net.Compilers nuget до v1.3.2.

Знайдене рішення тут: обговорення Github


0

Я вирішив цю проблему, оновивши всі залежності Nuget Microsoft до версії 2.0. Це використовувало VS 2017. Я використовував попередню версію.


0

У моєму випадку помилка виникла після вимкнення тестування модулів Live і запуску тестів вручну. Деякі тести не змогли б отримати помилку із зазначеним вище повідомленням про помилку.

Перехід до тесту -> Тестування одиниць в режимі реального часу -> Параметри та видача "Видалити збережені дані" вирішили проблему.


0

Я вирішив подібну проблему, видаливши папку .vs, що знаходиться всередині рішення.



0

На жаль, розширене рішення з "nuget install / gacutil" тут вище не могло працювати, оскільки точна версія dll залежності була недоступна.

Наступне вирішило мою проблему в нашому складному додатку веб-форми, щоб виконати рішення в Visual Studio -> Інструменти -> Nuget -> менеджер пакетних консолей

Update-Package -reinstall 

0

У моєму випадку я отримав цю помилку, оскільки моє рішення Visual Studio намагалося використовувати TextTransform.exeпід час етапу попередньої збірки в одному з проектів, але моя локальна машина не мала TextTransform.exeшляху, вказаного моїм кроком попередньої збірки, і моєю першою спробою виправити це було просто скопіювати TextTransform.exeз іншого місця туди, де Visual Studio очікував, що це буде. Здається, це спричинило цю проблему, оскільки TextTransform.exeмає інші мовчазні залежності.

Моє виправлення полягало в тому, щоб змінити кроки попередньої збірки, замість того, щоб шукати файл за адресою

C:\Program Files (x86)\Common Files\microsoft shared\TextTemplating\14.0\TextTransform.exe

замість цього він буде шукати в папці інсталяції Visual Studio, яка мала купу інших файлів, імовірно, один з яких був залежністю однолітків від TextTransform.exe

C:\Program Files\Visual Studio\Common7\IDE\TextTransform.exe

Здавалося, це все виправило для мене.


0

Сьогодні! у мене така сама проблема, і я її вирішую, перезапустивши Visual Studio 2015 :)


0

У мене виникла та сама проблема, я використовую VS2017 і встановив Microsoft.EntityFrameworkCore.SqlServer 3.1.8, тоді як у моїй базовій версії VS2017 .Net є 2.1. Тому я понизив свій Microsoft.EntityFrameworkCore.SqlServer до 2.1.1 і перезапустив рішення.

Попередження зникло !!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.