2015-01-16 9 views
9

ich irgendwie mein Projekt in einen Zustand gebracht, in dem Visual Studio 2013 mit einem lächerlichen Fehler zu kompilieren fehlschlägt:Visual Studio fragt mich, eine nicht vorhandene Assembly verweisen

The type 'System.Collections.Generic.Dictionary`2' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Collections, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.

Zunächst einmal ist es keine solche Montage Es existiert nicht. Zweitens ist Dictionary<TKey, TValue> in mscorlib.dll definiert, die standardmäßig standardmäßig referenziert wird. Resharper (der über eine eigene Codeanalyse-Engine verfügt) meldet, dass die Lösung normal kompiliert werden sollte.

Ich weiß nicht, wie auf der Erde es passieren könnte, weil meine letzten Änderungen nichts mit dem vermeintlich fehlerhaften Ort zu tun haben. Die Zeile verweist auf einige Standard-LINQ-Funktionen (GroupBy und ToDictionary), und es funktionierte für Monate ohne Änderungen. Leider kann ich keine MREs erstellen: Offensichtlich erscheint dieser Fehler nur im Kontext meiner riesigen Lösung und nur mit einigen spezifischen Änderungen an den vermutlich irrelevanten Orten.

Hier ist, was ich versucht, und es hat nicht funktioniert:

  • reinigen
  • ändern Ziel Framework von .NET 4.5 neu erstellen + 4.5.1 oder .NET 4.0
auf .NET

Hat jemand schon mal so eine Laune gesehen?

+0

Ist das eine tragbare Bibliothek? Vielleicht sind die Stubs irgendwie kaputt gegangen. – leppie

+0

@leppie Nein, dies ist eine reguläre Klassenbibliothek, die auf .NET 4.5 abzielt. – Skiminok

Antwort

2

Überprüfen Sie, ob alle Referenzen (Kernnetzwerke) in Ihrem Projekt gültig sind und alle auf dieselbe .NET Framework-Version verweisen.

Entfernen Sie im Zweifelsfall alle Referenzen und fügen Sie sie erneut hinzu (mit den Versionen 4.0.0.0).

Ich hatte dies einmal mit mir passiert (mit genau dem gleichen Fehler) und es war aufgrund einiger "Schrauben" auf der Version der Referenzen. Ich habe nie herausgefunden, WARUM es passiert ist, aber alle Referenzen zu entfernen und sie wieder hinzuzufügen, hat für mich funktioniert.

+0

Diese Magie schrieb die Hälfte meiner.csproj-Datei, und das Projekt baut jetzt :) Danke! Ich wünschte, ich wüsste, was dort in den Interna von MSBuild passiert ist ... – Skiminok

11

Ich hatte das gleiche Problem, aber es war auf einer Website Projekt - keine einfache Möglichkeit zu entfernen & wieder die Referenzen hinzufügen. Zum Glück fand ich, dass diese Antwort für mich gearbeitet - und war sogar schneller als mit Referenzen Messing https://stackoverflow.com/a/29575865/3841490

adding a new assembly tag to web.config seems to have resolved this issue. The tag I added was under the tag and as follows:

<assemblies> 
    <add assembly="System.Collections, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
</assemblies> 
2

ich genau das gleiche Problem hatte und es schien zwei NuGet Pakete bezogen werden, die diese enthalten Assembly "System.Collections.Immutable". Die zwei NuGet-Pakete, in denen "Microsoft.Bcl.Immutable" (nicht aufgelistet) und "System.Collections.Immutable".

Ich konnte das Problem nicht zuverlässig reproduzieren, und es scheint, dass das Problem mit VS2015 gelöst wurde.

Ich würde jedoch vorschlagen, nach NuGet-Paketen zu suchen, die dieselbe Baugruppe enthalten.

Entfernen von Microsoft.Bcl.Immutables löste dies für mich.

+0

Vielen Dank, hatte das gleiche Problem und es erschien nur, wenn ich versuchte, meine Website zu veröffentlichen, lokale war in Ordnung –

+0

@PaulBecker Froh, zu helfen! :) – CoolMcGrrr