Ich habe öfters das Problem, dass in Visual Studio plötzlich die Referenzen (referenzierte Bibliotheken) nicht mehr verfügbar sind. Dies tritt meistens auf, wenn ich das VS-Projekt über Git comitted habe und auf einem anderen Rechner weiterbearbeiten möchte. Auch tritt dies auf, wenn zum Beispiel mein Kollege an einem Projekt weitergearbeitet hat und ich dann über git mir die neueste Version per Pull-Request hole. Allermeistens ist dafür die vorausgegangene Ursache, dass für die eingebunden Bibliotheken, wie Telerik, ein Update gemacht worden ist und nun die Versionsstände, die in der *.cproj-Datei hinterlegt sind mit den installierten Versionen differieren.
Fehlermeldungen
Das Ganze äußert sich dann beim Kompilieren in der Fehlermeldung:
„The referenced component ‚[…]‘ could not be found.“
Und wenn man im Solution Explorer unter dem Projekt unter References nachschaut, dann sieht man die betreffenden Referenzen mit einem gelben Dreieck und Ausrufzeichen im Icon.
Schaut man sich die Eigenschaften (Properties) der Referenzen genauer an, so sieht man, dass alle betroffenen Referenzen, die Eigenschaft „Specific Version“ auf True gesetzt haben und die Eigenschaft Version 0.0.0.0 ist.
Das kann also nicht sein. Hier kann etwas nicht stimmen. Dies ist ärgerlich und frisst unnötig Zeit, die man lieber mit Programmieren verbringen würde wollen.
Lösungsansatz 1: Referenzen updaten
Ein Lösungsansatz ist alle Referenzen zu updaten. Um mir Zeit und Arbeit zu sparen habe ich es als erstes über die Package Manager Console versucht. Und dort den folgenden Befehl eingefügt:
PM> Update-Package
Falls die Package Manager Console nicht angezeigt wird, kann man diese über „View“ ➤ „Other Views“ ➤ „Package Manager Console“ aufrufen.
Dabei wurden einige Referenzen geupdated und sind nun verfügbar. Aber leider nicht alle. Im Großen und Ganzen bleibt das Problem bestehen.
Als zweiten Versuch habe ich dann den folgenden Befehl versucht,
PM> Update-Package -Reinstall
welcher die Nuget-Referenzen deinstalliert, um diese dann neu zu installieren. Dies hat leider auch nicht zum gewünschten Erfolg geführt. Viele Referenzen wurden zwar entfernt, jedoch nicht neu installiert.
Lösungsansatz 2: Specific Version auf False setzen
Ein weiterer Lösungsansatz kann sein in den Properties der betroffenen Refreces die Eigenschaft „Specific Version“ auf False zu setzen.
Für einige der betroffenen Referenzen hat das funktioniert. Diese haben danach das gelbe Dreieck mit Ausrufezeichen verloren. Leider klappte diese Vorgehensweise nicht für alle Referenzen.
Lösungsansatz 3: Packages manuell deinstallieren und neu installieren
Wenn alles nicht hilft, ist der weniger erquickliche und mühsame Lösungsansatz die einzelnen Packages über den NuGet Package Manager manuell zu deinstallieren und dann neu zu installieren.
Wer bereits vorher den Update-Package -Reinstall durchgeführt hat, muss ggf. nur noch neu installieren, weil die betreffenden Packages bereits deinstalliert sind.
Aufrufen kann man den NuGet Package Manager über Rechtsklick aufs Projekt und dann „Manage NuGet Packages…“ wählen. Oder man geht im Menü über „Tools“ ➤ „Nuget Package Manager“ ➤ „Manage NuGet Packages for Solution“.
Beim Neuinstallieren der Packages kann es leider zu neuen unerwarteten Problemen kommen. So erfolgte bei mir eine Fehlermeldung vom Typ:
Found conflicts between different versions of „assembly“ that could not be resolved.
Hier hilft nur ein Downgrade des in Konflikt stehenden Packages auf eine unterstützte Version.