Laden...

UWP: Projekt verliert nach jedem Neustart NuGet-Referenzen

Erstellt von Palladin007 vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.603 Views
Palladin007 Themenstarter:in
2.079 Beiträge seit 2012
vor 5 Jahren
UWP: Projekt verliert nach jedem Neustart NuGet-Referenzen

Guten Vormittag,

nach einem Neustart von VisualStudio gehen die NuGet-Packages immer "verloren".
Im NuGet Package Manager sind die noch aufgelistet, allerdings werden sie im Solution Explorer nicht unter References aufgeführt und überall im Projekt gibt's Fehler, dass alles unbekannt ist.

Der Befehl "Update-Package -reinstall" sagt mir nur "No package updates are available".
Ich hab mir bisher so geholfen, dass ich das Package "Microsoft.NETCore.UniversalWindowsPlatform" manuell eine Version herunter gesetzt und anschließend wieder aktualisiert habe. Nach dem aktualisieren tauchen sie wieder unter References auf und es gibt keine Build-Fehler mehr.
Was interessant ist: In den Options ist als "Default package management format" die "Packages.config" eingestellt, allerdings gibt's die nicht und die wird auch nie erstellt. Wenn ich auf PackageReference umstelle, ändert sich nichts, zumindest nichts, von dem ich weiß.

Das Verhalten tritt auch nur bei UWP auf, bei anderen Projekten (WPF, .NET Standard, Xamarin, Console, ASP.NET, etc.) funktioniert das ganz hervorragend. Unter UWP kann ich das dagegen sehr zuverlässig reproduzieren, dafür muss ich ja nicht's weiter tun als VisualStudio neu zu installieren.

Hat jemand eine Idee, woran das liegt und wie ich das beheben kann?

Beste Grüße

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.

16.835 Beiträge seit 2008
vor 5 Jahren

PackageReference ist das korrekte für aktuelles UWP; NuGet-Referenzen werden dann in der csproj geführt und nicht in packages.config...

"Packages.config" eingestellt, allerdings gibt's die nicht und die wird auch nie erstellt.

Wenn beim Erstellen ein Fehler auftritt, dann kommt das eigentlich in den Output.
Sicher, dass Du evtl. nicht am falschen Ort schaust?

Palladin007 Themenstarter:in
2.079 Beiträge seit 2012
vor 5 Jahren

Wird die Einstellung dann überhaupt verwendet? Wenn nicht, würde das erklären, warum das Umstellen auf "PackageReference" nichts geändert hat.

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.

Palladin007 Themenstarter:in
2.079 Beiträge seit 2012
vor 5 Jahren

Wenn ich VisualStudio jetzt neu starte, dann habe ich wieder folgendes Verhalten:

Unter References (im Solution Explorer) werden die NuGet-Packages nicht aufgeführt. Das betrifft auch das Package "Microsoft.NETCore.UniversalWindowsPlatform", was meines Wissens nach bei jedem UWP-Projekt installiert sein muss.

In der Error List werden zig Fehler angezeigt, die alle einem der folgenden Muster entsprechen:> Fehlermeldung:

The name "{0}" does not exist in the namespace "{1}"
Predefined type '{0}' is not defined or imported
The type '{0}' is defined in an assembly that is not referenced. You must add a reference to assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.

Ein paar der vermissten Typen sind übrigens System.Object, System.Void, Systme.Type, System.Int32, ...

Die Fehler im Output nach einem Bild passen zu den Fehlern in der Error List:> Fehlermeldung:

XamlCompiler error WMC1006: Cannot resolve Assembly or Windows Metadata file 'System.Runtime.dll'
Xaml Internal Error error WMC9999: Type universe cannot resolve assembly: System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a.

Wenn ich nun das "Microsoft.NETCore.UniversalWindowsPlatform"-Package eine Version herunter setze und danach wieder aktualisiere, ist alles, wie es sein soll.

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.

16.835 Beiträge seit 2008
vor 5 Jahren
Palladin007 Themenstarter:in
2.079 Beiträge seit 2012
vor 5 Jahren

Jap, tut es, hab ich gerade eben getestet und das Test-Projekt angehängt.

Packages, References und die eine DLL mit Shared-Project sind genauso wie im Original-Projekt, die Funktion ist aber ein simpler TextBlock mit "Hello World".

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.

16.835 Beiträge seit 2008
vor 5 Jahren

Sofern Du die aktuelle Version von VS hast würde ich ein Bug Report machen.
Da ich immer mit der Preview von Visual Studio arbeite und aktiv die Qualität verbessern möchte, reiche ich auch reichlich Bugs bei VS ein, die mir so auffallen.
Die Jungs dahinter reagieren echt schnell.

Palladin007 Themenstarter:in
2.079 Beiträge seit 2012
vor 5 Jahren

Ich hab's versucht, ein bisschen einzugrenzen, aber bisher keine Chance.
Erst dachte ich, es liegt an der DLL mit dem Shared-Project oder an dem "System.ComponentModel"-Package, weil da einmal der Fehler das erste Mal aufgetreten ist, etc. Wenn ich die Vermutungen dann aber einzeln testen will, funktioniert es Mal und Mal funktioniert es nicht. Ich hatte sogar einmal den Fall, da trat der Fehler bei einer BlankApp ohne Änderungen auf, bei einer zweiten BlankApp ohne Änderungen allerdings nicht mehr.

Es scheint wohl an einer Kombination der ganzen Dinge zu liegen oder an irgendwelche Chaches, die je nach Situation andere Inhalte haben (z.B. bei mehreren VisualStudio-Instanzen mit verschiedenen Projekten), eine andere Erklärung fällt mir nicht ein, dass eine BlankApp Mal funktioniert und Mal nicht.

Aber ja, ich geb's Mal zum VisualStudio-Team, danke dir für deine Hilfe.

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.

Palladin007 Themenstarter:in
2.079 Beiträge seit 2012
vor 5 Jahren

PS:

Jetzt hab ich das Test-Projekt, was ich eben hoch geladen habe, noch Mal herunter geladen und gestartet und es funktioniert O.O

Ich blicks nicht mehr ...

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.