Datei oder Assembly 'Microsoft.CodeAnalysis, Version = 1.3.1.0, Kultur = neutral, PublicKeyToken = 31bf3856ad364e35' oder eine ihrer Abhängigkeiten konnte nicht geladen werden

78

Letzte Nacht ist ein Update aufgetreten, und jetzt kann ich kein Strg + 'mehr ausführen.' für Codevorschläge in VS 2015. Es wird eine Fehlermeldung angezeigt, die Folgendes besagt:

Datei oder Assembly 'Microsoft.CodeAnalysis, Version = 1.3.1.0, Kultur = neutral, PublicKeyToken = 31bf3856ad364e35' oder eine ihrer Abhängigkeiten konnte nicht geladen werden. Die angegebene Datei wurde vom System nicht gefunden.

Ich kann noch bauen und entwickeln, aber das wird ohne diese Funktion wirklich nervig. Ich gebe es zu, ich werde weich!

Hat jemand einen Vorschlag zur Behebung dieses Fehlers?

Captain America
quelle
1
Ich bekomme das auch heute ... Ich wünschte ich wüsste was es kaputt gemacht hat! Unsere Build-Maschine hat die gleichen VS / C # -Versionen und Strg + '.' funktioniert immer noch gut. Wir hatten DotNetCompilerPlatform in keinem der NuGet-Pakete unserer Projekte, daher verstehe ich nicht, warum wir es plötzlich installieren und die Build-Konfigurationen aller unserer Projekte aktualisieren müssen!
System.Cats.Lol
Entschuldigung, ich bin mir nicht sicher, warum dies geschieht. Ich habe gerade versucht, die Microsoft.CodeDom.Providers.DotNetCompilerPlatform in ein anderes Projekt zu laden, das sie ursprünglich nicht in der Lösung hatte und nicht funktionierte.
Captain America
2
Wie von Vilhelm H. in VS hervorgehoben: Tools-> Nuget Package Manager -> Package Manager Consoleund dann Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform.
Sven M.

Antworten:

29

Ich hatte das gleiche Problem mit Visual Studio 2015 Update 2, um das Problem global für alle Lösungen zu lösen, aktualisieren Sie auf Visual Studio 2015 Update 3 . Hier ist ein Link: Download von hier

shopOFF
quelle
2
Ich ändere die richtige Antwort auf diese Antwort, weil meine ursprüngliche Antwort nur die aktuelle Lösung und keine andere Lösung von mir korrigiert hat. Meiner Meinung nach behebt dies das Problem und ist die Antwort, die die meisten Leute wollen, wenn sie nach einer Lösung für diesen Fehler suchen. Danke shopOff!
Captain America
Update 3 10/10 Fix. Frage mich, wann dies eingeführt wurde? Es passierte mir plötzlich.
AlbatrossCafe
1
Es hat bei mir nicht funktioniert, während die Lösung stackoverflow.com/a/42560044/581285 das Problem behoben hat.
Mauro Vanetti
61

Wie von @CaptainAmerica hervorgehoben, besteht die Lösung darin, die CodeDom-Assembly von NuGet zu aktualisieren. Man sollte darauf hinweisen, wie dies in Visual Studio gemacht wird. Ich habe hier die Lösung gefunden:

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

Grundsätzlich wählen Sie im Visual Studio-Menü:

Tools-> Nuget Package Manager -> Package Manager Console

Führen Sie in der Konsole, die unten in Visual Studio angezeigt wird, den folgenden Befehl aus:

Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Vilhelm H.
quelle
12
Dies löst das Problem, aber ich verstehe immer noch nicht, warum wir dieses Paket überhaupt hinzufügen müssen. Bis heute Strg + '.' funktionierte in allen unseren Lösungen einwandfrei, und wir hatten dieses Paket in keiner ihrer NuGet-Konfigurationen aufgeführt. Eine Reparatur der VS 2015-Installation hat ebenfalls nicht geholfen.
System.Cats.Lol
Danke vielmals! Das hat es geschafft. Besonderer Dank für die Bereitstellung der Lösung Befehl zu Befehl. Ersparte mir den Aufwand, mehr als unbedingt erforderlich zu lesen. ;)
Sven M.
1
Dies mag funktionieren oder auch nicht, aber es scheint eine schlechte Idee zu sein, dass für Intellisense / CodeAnalysis in Visual Studio einzelne Lösungen dieses NuGet-Paket benötigen. Das Update auf Update 3 funktioniert.
Suamere
34

Wenn eine der Optionen nicht funktioniert, finden Sie hier die ausführliche Anleitung zur Behandlung dieses Szenarios.

Zuallererst ist die Version wichtig. Beachten Sie die im Fehler erwähnte Version ...

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.

Wenn Sie den obigen Fehler sehen, bedeutet dies, dass Version 1.3.1 nicht gefunden werden kann. Jetzt erstellen Sie bitte ein neues VS-Projekt. Keine Einstellungen, es kann nur eine einfache Konsolenanwendung sein. Sobald die Projektvorlage fertig ist, rufen Sie den Paket-Manager auf und führen Sie den folgenden Befehl mit der angegebenen Version aus ...

Install-Package Microsoft.CodeAnalysis -Version 1.3.1

Dadurch werden alle Pakete installiert. Lass es vervollständigen. Sobald es fertig ist. Wir brauchen dieses neu erstellte Projekt überhaupt nicht. Sie können es vollständig löschen. Ernsthaft! Sie können es löschen. Wir haben dies getan, weil wir wollten, dass dieses Paket auf globaler Nuget-Ebene installiert wird. Wenn Sie etwas installieren, speichert Nuget es auch auf globaler Ebene Ihres Computers. Pfad wird so etwas sein ...

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

Sie können Ihren Weg kennen, indem Sie ...

%USERPROFILE%\.nuget\packages

Jetzt sehen Sie Ihre erforderliche Microsoft.CodeAnalysis.dll dort im folgenden Ordner ...

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

Bitte beachten Sie, dass der obige Pfad die Versionsnummer (1.3.1) enthält. Wenn Ihre Version anders ist, schauen Sie in diesen Versionsordner.

Nachdem Sie die DLL bei sich haben, müssen Sie diese DLL nur noch zu GAC hinzufügen. Dafür benötigen Sie GacUtil.exe

Diese Datei wird bereits zusammen mit Visual Studio installiert. Sie können "GacUtil" im Laufwerk C suchen. Für mich ist es dort unten Pfad ...

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

Führen Sie nun die Eingabeaufforderung als Administrator aus und navigieren Sie im aktuellen Verzeichnis zu Ihrem Pfad, der GacUtil enthält. Der folgende Befehl zum Installieren dieser DLL in GAC.

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

Grundsätzlich haben wir den Pfad zur DLL bereitgestellt, den wir global installiert haben. Bei erfolgreicher Installation wird eine Meldung angezeigt.

Das ist alles! Starten Sie nun Ihr Visual Studio erneut und Sie werden dieses Problem beheben.

Dhrumil Bhankhar
quelle
3
Das war ein Vergnügen für mich! Die einzige Überlegung, die andere Antworten nicht zu erwähnen scheinen, ist, dies in einem NEUEN Projekt zu tun. Andernfalls fügen Sie Ihrer Lösung und möglicherweise der Quellcodeverwaltung eine Menge Müll hinzu.
GilesDMiddleton
1
@ GilesDMiddleton, ja, sehr wahr! Es ist wirklich wichtig, diesem Punkt zu folgen. Microsoft.CodeAnalysis ist ein wirklich großes Bündel von Abhängigkeiten, und Sie möchten keinesfalls, dass sie unter Ihrem Arbeitsprojekt installiert werden.
Dhrumil Bhankhar
Danke, das funktioniert. In meiner Situation musste ich 2 DLLs installieren und den PC neu starten, um wirksam zu werden.
Ehsan Abidi
1
Dies ist eine perfekte Lösung. Danke mann. Ich werde eine Zeile aus einem anderen Kommentar oder einer anderen Frage hinzufügen. Add-GacAssembly [myPath] \ Microsoft.CodeAnalysis.dll. Und wenn Sie noch nicht haben Gac installieren, öffnen Sie dann Powershell im Admin - Modus und geben Sie Install-Modul -Name Gac, danach läuft, können Sie überprüfen , indem Sie die Eingabe Add-Gac und die Tabulatortaste drücken , sollte er den Befehl abzuschließen und dann Pfad hinzufügen
Sahib Khan
2
Übrigens muss ich auch die Microsoft.CodeAnalysis.CSharp.dll im GAC installieren, damit sonarqube das Projekt analysiert.
Charlie
11

Ich habe diese Seite gefunden und am Ende der Seite unter "Kompatibilität mit ASP.NET" steht, dass ASP.NET das Nuget-Paket Microsoft.CodeDom.Providers.DotNetCompilerPlatform verwendet, um die Microsoft.CodeAnalysis-Assemblys zu aktualisieren. Also habe ich das DotNetCompilerPlatform-Paket von 1.0.0 auf 1.0.3 aktualisiert und es funktioniert wieder! Ja, das Leben ist wieder gut!

Captain America
quelle
Ich habe das gleiche Problem. Können Sie bitte erläutern, wie die Microsoft.CodeAnalysis-Assemblys aktualisiert werden?
Marcello
@Marcello Lesen Sie die Antwort unten. In VS: Tools-> Nuget Package Manager -> Package Manager Consoleund dann Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform.
Sven M.
OK. Ich habe es getan und es hat das Problem gelöst, aber nur für die spezifische Lösung. Wenn ich eine andere Lösung öffne, bleibt das Problem bestehen.
Marcello
9

Um dieses Problem für alle Lösungen zu lösen, musste ich die Assembly Microsoft.CodeAnalysis.dll direkt im GAC - Global Assemblies Cache installieren .

Ich habe die Datei Microsoft.CodeAnalysis.dll von C: / Users / [user] /. Nuget / packages / Microsoft.CodeAnalysis.Common / 1.3.2 / lib / portable-net45 + win8 / Microsoft.CodeAnalysis.dll erhalten .

Um die Assembly im GAC zu installieren, habe ich ein PowerShell-Skript von https://github.com/LTruijens/powershell-gac verwendet .

Schließlich gelang es mir, die Assembly mit dem folgenden Befehl von PowerShell im GAC zu installieren:

Add-GacAssembly [myPath]\Microsoft.CodeAnalysis.dll
Marcello
quelle
1
Tolle Idee, obwohl ich es nicht ausprobiert habe. Dies geschieht wahrscheinlich automatisch beim Update auf Update 3. Dies ist jedoch eine großartige Lösung zwischen dem Wechsel zu Update 3 und dem Ausführen in jeder Lösung.
Suamere
Der Link zu Add-GacAssembly ist ein Link zur Dokumentation, nicht zum Skript. Das verknüpfte Projekt scheint komischerweise keine tatsächlichen Skripte zu enthalten. Google weiß, wo sich das Skript befindet, druckt jedoch nur einen Fehler darüber aus, dass das Skript nicht digital signiert ist.
15ee8f99-57ff-4f92-890c-b56153
Für diejenigen, die nicht ein oder zwei Tage Zeit haben, um mit PowerShell zu kämpfen, gibt es die gacutilVS Developer Command Prompt. Damit können Sie die obige Baugruppe im GAC installieren. Es hat das Problem für mich nicht gelöst.
15ee8f99-57ff-4f92-890c-b56153
@EdPlunkett, siehe github.com/LTruijens/powershell-gac/blob/master/INSTALL.md, wie man das Powershell-Modul installiert
Lars Truijens
3

Ich stand auch vor dem gleichen Problem. Meine Visual Studio 2015 Version war 2.0. Ich habe es auf Version 3 aktualisiert.

Problem wurde gelöst !!!

AbhijeetGaikwad
quelle
2

Ich habe das Problem folgendermaßen gelöst:

Aktualisieren Sie Visual Studio 2015 auf Update 3

Wählen Sie im Menü Ansicht => Benachrichtigungen => Visual Studio Update 3 und klicken Sie auf die Schaltfläche Aktualisieren.

MarianNikolov
quelle
1

Ich hatte auch das gleiche Problem: Versuchen Sie, das Microsoft.CodeAnalysis.CSharp- Nuget-Paket zu installieren . Und wenn es nicht behoben ist, überprüfen Sie die Version von Microsoft.Net.Compilers in Ihrem Projekt. Ich hatte die Version 1.0.0, die ein Problem verursachte, das das Microsoft.Net.Compilers- Nuget auf Version 1.3.2 aktualisiert hat.

Hier gefundene Lösung: Github-Diskussion

Priyank Kotiyal
quelle
0

Ich habe dieses Problem behoben, indem ich alle Nuget Microsoft-Abhängigkeiten auf v2.0.0 aktualisiert habe. Hier wurde VS 2017 verwendet. Ich habe eine Vorschau-Version verwendet.

Wilkoteq
quelle
0

In meinem Fall trat der Fehler auf, nachdem Live Unit Testing deaktiviert und Tests manuell ausgeführt wurden. Einige Tests schlugen mit der obigen Fehlermeldung fehl.

Gehen Sie zu Test -> Live Unit Testing -> Optionen und geben Sie "Persistierte Daten löschen" aus, um das Problem zu beheben.

MonteChristo
quelle
0

Ich habe ein ähnliches Problem behoben, indem ich den .vs-Ordner in der Lösung gelöscht habe.

HonzaCZE
quelle
0

Leider konnte die umfangreiche Lösung mit "nuget install / gacutil" hier oben nicht funktionieren, da die genaue Version der Abhängigkeits-DLL nicht verfügbar war.

Das folgende Problem, das ich in unserer komplexen Webform-Anwendung gelöst habe, bestand darin, die Lösung in Visual Studio -> Tools -> Nuget -> Konsolenpaket-Manager auszuführen

Update-Package -reinstall 
jpb
quelle
0

In meinem Fall wurde dieser Fehler angezeigt, weil meine Visual Studio-Lösung versuchte, ihn TextTransform.exewährend eines Pre-Build-Schritts in einem der Projekte zu verwenden, mein lokaler Computer jedoch nicht über TextTransform.exeden Pfad verfügte, der durch meinen Pre-Build-Schritt und angegeben wurde Mein erster Versuch, dies zu beheben, bestand darin, einfach TextTransform.exevon einem anderen Ort an den von Visual Studio erwarteten Ort zu kopieren . Dies scheint dieses Problem verursacht zu haben, da TextTransform.exeandere stille Abhängigkeiten bestehen.

Mein Fix bestand darin, die Schritte vor dem Erstellen zu ändern, anstatt nach der Datei zu suchen

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

Es würde stattdessen im Visual Studio-Installationsordner suchen, der eine Reihe anderer Dateien enthielt, von denen vermutlich eine eine Peer-Abhängigkeit von war TextTransform.exe

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

Das schien die Dinge für mich zu reparieren.

Meistens armlos
quelle
0

Heute ! Ich habe das gleiche Problem und löse es durch einen Neustart von Visual Studio 2015 :)

Don Simo
quelle
0

Ich habe das gleiche Problem, ich verwende VS2017 und habe Microsoft.EntityFrameworkCore.SqlServer 3.1.8 installiert, während in meiner VS2017 .Net-Kernversion 2.1 ist. Daher habe ich meinen Microsoft.EntityFrameworkCore.SqlServer auf 2.1.1 heruntergestuft und die Lösung neu gestartet.

Die Warnung war weg !!

Ashvani Mishra
quelle