Ich installiere das Paket AvsAn
(2.1.0) mit dem Nuget-Paket-Manager. Ich erwarte, dass der Referenzpfad zum Paketverzeichnis lautet, etwa wie folgt:
C: \ app \ packages \ AvsAn.dll
Aber ein Verweis auf das Verzeichnis bin hinzugefügt:
C: \ app \ NameSpace \ bin \ AvsAn.dll
Verwirrenderweise passiert dies bei einigen Paketen, aber nicht bei anderen (d. h. der Bezugspfad ist wie erwartet zum Paketordner)
Wir haben festgestellt, dass verschiedene Projekte innerhalb derselben Lösung unterschiedliche Versionen voneinander verwendeten. Außerdem kann für ein einzelnes Projekt eine Version im Element <Reference>
aus der in HintPath
aufgeführten Version aufgeführt sein.
Wir haben einfach jede .csproj-Datei durchlaufen und sie manuell bearbeitet, um alles synchron zu bekommen.
<Reference
beginnt und die Informationen für die betreffende DLL enthält. <Reference Include="SomeAssembly, Version=4.0.54">
. Daran kann es noch zusätzlichen Text geben, zB Culture
und / oder PublicKey
, usw. Wir interessieren uns nur für das Attribut Version.
<HintPath>
in <Reference
, es enthält den Pfad zu dieser DLL, die VS erwartet (wobei VS zuerst aussieht). ..\packages\SomePackage.4.0.56\lib\net45\SomeAssembly.dll
(zum Beispiel - in unserem Fall waren es Service Stack-Pakete). Obwohl dies technisch gesehen keine Version ist (es ist nur ein Pfad zu einer Datei auf Ihrem System), entspricht es normalerweise der Version der DLL. In unserem Fall wurden wir von ServiceStack 4.0.54 auf 4.0.56 umgestellt. Einige der Include
Referenzen waren auf 4.0.56, während der Pfad immer noch auf die Version 4.0.54 zeigte. Da der Hinweispfad nicht auf die erwartete DLL zeigte, suchte VS nach einer anderen Stelle und fand eine akzeptable Übereinstimmung im Verzeichnis \bin\debug
des Projekts. Dies war nicht die richtige Version.
Es hängt von Ihrer speziellen Situation ab, was Sie ändern und was.
Dies wurde wahrscheinlich durch schlechte Zusammenführungen verursacht.
Außerdem haben wir die Verzeichnisse \bin
und \packages
unterhalb des Projektordners entfernt. Reloaded Lösung und lassen Nuget wiederherstellen. Dies dient nur dazu, die Dinge zu klären, damit Nuget nur die Pakete und ihre Versionen herunterziehen kann, die es benötigt. Und es verhindert, dass VS falsche Versionen verwendet, die sich möglicherweise im Verzeichnis \bin
des Projekts befinden. Beide sind sicher zu löschen. Der Ordner \packages
wird neu erstellt und über Nuget restor gefüllt, und das Verzeichnis \bin
wird beim nächsten Build der Lösung neu erstellt und gefüllt.
Tags und Links asp.net-mvc c# visual-studio packages nuget