myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Entwicklungs- und Laufzeitumgebung (Infrastruktur) » Projekte verlieren Referenzen
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Projekte verlieren Referenzen

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
danieljena danieljena ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.11.2015
Beiträge: 38
Entwicklungsumgebung: VS2019CE


danieljena ist offline

Projekte verlieren Referenzen

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Leute,
Ich nutze VS2019CE.

In letzter Zeit bin ich fast Wahnsinnig geworden.
Ich arbeite an verschiedenen Rechnern und übertrage meine Projektordner immer mit Strick etc.
Nun ist mir aufgefallen, dass bei vielen Projekten (in einer Solution) folgende zwei Fehler auftreten:
- alle !=Projektereferenzen werden verloren und die Einträge im Baum bekommen ein gelbes Dreieck
- die Textfelder in den Assembly-Informationen (Projekt-Properties) sind leer.

Hat noch jemand diesen Fehler?
Woran kann es liegen?
Reparaturinstallation von VS hat nichts gebracht.

Aufgedeckt habe ich bisher folgendes:
1.
Erstelle ich an PC1 (aktuelles Win10Pro) ein Projekt und übertrage den Ordner mit Stick auf PC2 (ebenfalls aktuelles Win10Pro) werden die Referenzen verloren.
Starte ich die Projekte am gleichen PC passiert auch nach Tagen (inkl mehrerer Neustarts) nichts.
Kann dies an NTFS Berechtigungen etc liegen, auf den beiden PCs ist jeweils ein eigener normaler Benutzer.
2.
Der Fehler tritt ab zwischen Spätsommer 2019 und Frühjahr 2020 auf.

Jemand ne Idee :(
danieljena
29.04.2020 17:19 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 14.033
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Wenn sowas passt ist das ein Hinweis auf ein falsches Handling von Solutions.

- Redest Du von Projektreferenzen oder NuGet oder Assembly oder...?
- Du hast Solutions so aufgebaut wie es für .NET Anwendungen empfohlen ist?
29.04.2020 17:26 Beiträge des Benutzers | zu Buddylist hinzufügen
danieljena danieljena ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.11.2015
Beiträge: 38
Entwicklungsumgebung: VS2019CE

Themenstarter Thema begonnen von danieljena

danieljena ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von Abt:
- Redest Du von Projektreferenzen oder NuGet oder Assembly oder...?

Projectreferenzen werden behalten, alle anderen (egal ob NuGet oder Assemblys) werden verloren

Zitat von Abt:
- Du hast Solutions so aufgebaut wie es für .NET Anwendungen empfohlen ist?

Wie meinst du das?
Dann stellt sich mir aber die Frage, warum erst ab leztes Jahr Spätsommer, die Solution ist definitiv älter.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von danieljena am 29.04.2020 17:51.

29.04.2020 17:49 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 14.033
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Naja, es gibt klare Empfehlungen wie Solutions (=Projektmappen) aufgebaut werden, wo darin Assemblies liegen und wie NuGet referenziert wird.
Riecht danach, dass da was nicht stimmt.

Zitat:
Dann stellt sich mir aber die Frage, warum erst ab leztes Jahr Spätsommer, die Solution ist definitiv älter.

Möglicherweise ein schleichender Folgefehler. Würde das nun nicht auf das Tooling schieben...
29.04.2020 17:53 Beiträge des Benutzers | zu Buddylist hinzufügen
danieljena danieljena ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.11.2015
Beiträge: 38
Entwicklungsumgebung: VS2019CE

Themenstarter Thema begonnen von danieljena

danieljena ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ich hab jetzt den Fehler höchstwahrscheinlich gefunden.
Alle Projekte die ich auf PC1 (privater Rechner) erstellt habe, funktionieren dort, verlieren jedoch auf PC2 (dienst-Rechner in einen WinAD-Verbund) die Referenzen.
Umgedreht werde ich nachher gleich testen.

Meine genutzten Assemblys habe ich bisher immer über ganz normale Dialogfenster referenziert, wurden also aus c:\prog x86\ref.a.\net\... gezogen.

Der Verlust von Nuget-Referenzen ist mir bisher schleierhaft, hier werden die Files doch im packages-Ordner in der Projektmappe abgelegt und per relativen-Pfad verwendet. Oder stimmt das nicht?
29.04.2020 18:17 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 14.033
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von danieljena:
Meine genutzten Assemblys habe ich bisher immer über ganz normale Dialogfenster referenziert, wurden also aus c:\prog x86\ref.a.\net\... gezogen.

Du gibst ja leider genau 0 Infos von welchen Projekttypen oder ob .NET Framework oder .NET Core zu sprichst; aber mühsam ernährt sich das Eichhörnchen.
Da Du offenbar vom GAC sprichst /oder meinst, wirst Du also .NET Framework haben und die .NET Framework Assemblies meinen.

Hätten ja auch Drittanbieter Assemblies, SDK Assemblies oder Whatever sein können. Gab ja keine Info.
  • Classic .NET Assemblies werden eigentlich aus dem GAC Folder (und nur über den Namen!) referenziert
  • Die meisten Assemblies können (auch für .NET Framework) mittlerweile aus NuGet konsumiert werden
  • Reference Assembly Folder in Program Files (den wirste wohl meinen, auch wenn ich raten muss) ist nicht für das Referenzieren gedacht, das ist NICHT der GAC. Dieser Ordner existiert (in vollem Umfang) nur auf Entwicklermaschinen und hat SDK Files.
    Auf jeder Maschine ohne das entsprechende SDK knallts zur Runtime.
    Siehe auch  .NET History: evolution of design time assemblies
Da dies also nur Contract Assemblies sind, die in besagten Ordner liegen heisst das nicht, dass Du diese Assemblies einfach so referenzieren solltest.

In 99,999% der Fälle referenzierst Du Framework Assemblies klassisch über den Assembly Dialog und nicht über die manuelle Suche und den Verweis auf den SDK Folder;
Das führt dann auch dazu, dass die Verweise nicht über irgendwelche Pfade in der *.proj Datei angelegt werden sondern eine namentlicher Verweis ähnlich wie bei NuGet erfolgt.

XML-Code:
  <ItemGroup>
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="System.Deployment" />
  </ItemGroup>

Und eben modern über NuGet.

Ich würde nun also behaupten: Du referenzierst falsch, sofern Du nicht bewusst wirklich die Eigenschaften von Contract Assemblies willst.

Zitat von danieljena:
Der Verlust von Nuget-Referenzen ist mir bisher schleierhaft, hier werden die Files doch im packages-Ordner in der Projektmappe abgelegt und per relativen-Pfad verwendet.

Primär lädt NuGet die Dateien in einen lokalen Cache Folder Deines Userprofiles, sodass er nicht dauernd von NuGet laden muss.
Pakete werden dann bei Verwendung (bei .NET Framework) in die Solution Folder kopiert.

.NET Framework hat noch nie das Kopieren von Paketen gemocht. Noch nie.
Was sich in der Zwischenzeit geändert hat; das kann Dir hier keiner sagen.

Die Vermutung liegt nahe, dass Du was am Projekt oder am Tooling geändert hast und Dir die Auswirkungen unklar waren.
"Ich hab nichts gemacht" hat sich in 99% der Fälle so rausgestellt, dass eben was passiert ist, was dem User nicht klar war - oder doch was geändert hat aber das vergessen hat.

Die bessere Variante ohnehin wäre, wenn Du eine Quellcode-Verwaltung verwenden würdest statt die USB Stick (nicht Strick!) Kopiererei.
Dann hättest zum einen die historische Nachvollziehbarkeit und zum anderen ist das das Synchronisieren viel einfacher und weniger fehleranfällig - und Teil des vorhandenen Tooling in Visual Studio.
29.04.2020 18:32 Beiträge des Benutzers | zu Buddylist hinzufügen
danieljena danieljena ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.11.2015
Beiträge: 38
Entwicklungsumgebung: VS2019CE

Themenstarter Thema begonnen von danieljena

danieljena ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von Abt:
Du gibst ja leider genau 0 Infos von welchen Projekttypen oder ob .NET Framework oder .NET Core zu sprichst; aber mühsam ernährt sich das Eichhörnchen.
Da Du offenbar vom GAC sprichst /oder meinst, wirst Du also .NET Framework haben und die .NET Framework Assemblies meinen.

Ja, Sorry, ich nutze NF 4.7.2

Zitat von Abt:
Reference Assembly Folder in Program Files (den wirste wohl meinen, auch wenn ich raten muss) ist nicht für das Referenzieren gedacht, das ist NICHT der GAC. Dieser Ordner existiert (in vollem Umfang) nur auf Entwicklermaschinen und hat SDK Files.

Das wusste ich bisher nicht, ich habe die ganz normal die Einträge vom Referenzierungsfenster in VS verwendet. Aber, der genannte Ordner existiert auf beiden PCs.
Warum hier bei mir nicht auf den GAC gegriffen wird, keine Ahnung.

Zitat von Abt:
In 99,999% der Fälle referenzierst Du Framework Assemblies klassisch über den Assembly Dialog und nicht über die manuelle Suche und den Verweis auf den SDK Folder;
Das führt dann auch dazu, dass die Verweise nicht über irgendwelche Pfade in der *.proj Datei angelegt werden sondern eine namentlicher Verweis ähnlich wie bei NuGet erfolgt.

Ich habe nicht manuell referenziert, bin im Ref.Fenster links auf Assemblys und hab mir die notwendigen Einträge ausgewählt. Woher dann die Files gezogen wurden, war mir bisher auch nicht bewusst.

Zitat von Abt:
Die bessere Variante ohnehin wäre, wenn Du eine Quellcode-Verwaltung verwenden würdest statt die USB Stick (nicht Strick!) Kopiererei.

Leider kann ich nur lokale Repos verwenden, aber damit dürfte es ja auch funktionieren. Meine Dienststelle macht mit bei GitHub leider einen Strich durch die Rechnung
Strick = Stick = Ja, mhm, ein blöder Tippfehler :)



Gerade mal in einer *.proj geschaut:

XML-Code:
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />

Die stehen z.B. so drin, und bekommen trotzdem ein gelbes Dreieck.
29.04.2020 20:31 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 14.033
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von danieljena:
Die stehen z.B. so drin, und bekommen trotzdem ein gelbes Dreieck.

Dann ist es prinzipiell richtig referenziert wenn es so in der Projektdatei steht.
Dann referenzierst Du auch (nicht explizit) keine Contract Assemblies; das passt dann soweit.

Lösch mal den *.vs Folder und starte Visual Studio neu.

Im *.vs Ordner legt Visual Studio lokale (Cache)-Dateien an; diese sollten zB auch nicht in SCM synchronisiert und auch nicht auf andere Systeme übertragen werden.
29.04.2020 20:35 Beiträge des Benutzers | zu Buddylist hinzufügen
danieljena danieljena ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.11.2015
Beiträge: 38
Entwicklungsumgebung: VS2019CE

Themenstarter Thema begonnen von danieljena

danieljena ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Leider hat dies nichts geholfen.

Wie bereits geschrieben funktioniert eine Übertragung der Projekte vom privat PC zum dienstlichen nicht richtig. Umgekehrt funktioniert es jedoch wunderbar.
Muss also irgendwie an meinem PC liegen :(

Der übertragene Projekt-Ordner im Fall zwei hat dann auf meinen PC sowohl für die Admin- als auch für die Benutzer-Gruppe Vollzugriff.
Erstelle ich aufm meinem privat PC ein neues Projekt und schaue mir die Sicherheit des Projekt-Ordner an, hat die Benutzer-Gruppe nur Lesen-Ausführen-Berechtigungen.
Jedoch stelle ich hier keine Einschränkungen fest, dieses neue Projekt werde ich morgen mal aufm Dienst-PC testen/untersuchen.
Ich werd den Gedanken nicht los, dass es am Berechtigungssystem von Windows liegt.
29.04.2020 22:48 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
danieljena danieljena ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.11.2015
Beiträge: 38
Entwicklungsumgebung: VS2019CE

Themenstarter Thema begonnen von danieljena

danieljena ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Guten Morgen,
normalerweise ist es doch auch so, dass im Ref.Fenster bei den Assemblies die Haken gesetzt sind, welche bereits referenziert sind. Bei funktionierenden Projekten stimmt dies auch. Nur bei denen wo die Referenz nicht "gefunden" wird, tauchen auch da keine Haken auf.
30.04.2020 10:47 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Th69
myCSharp.de-Poweruser/ Experte

avatar-2578.jpg


Dabei seit: 01.04.2008
Beiträge: 3.677
Entwicklungsumgebung: Visual Studio 2015/17


Th69 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Und wenn du da mal die Referenzen hinzufügst und danach mal die beiden Projektdateien vergleichst?
30.04.2020 11:07 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
danieljena danieljena ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.11.2015
Beiträge: 38
Entwicklungsumgebung: VS2019CE

Themenstarter Thema begonnen von danieljena

danieljena ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

so in etwa steht es in beiden:

XML-Code:
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" /
30.04.2020 11:18 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
danieljena danieljena ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.11.2015
Beiträge: 38
Entwicklungsumgebung: VS2019CE

Themenstarter Thema begonnen von danieljena

danieljena ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Kann jemand mit diesen beiden Gruppen in einer *.csproj-Datei etwas anfangen?
1.

XML-Code:
  <ItemGroup>
    <BootstrapperPackage Include=".NETFramework,Version=v4.5.2">
      <Visible>False</Visible>
      <ProductName>Microsoft .NET Framework 4.5.2 %28x86 und x64%29</ProductName>
      <Install>true</Install>
    </BootstrapperPackage>
    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
      <Visible>False</Visible>
      <ProductName>.NET Framework 3.5 SP1</ProductName>
      <Install>false</Install>
    </BootstrapperPackage>
  </ItemGroup>

2.

XML-Code:
  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('..\packages\linq2db.MySql.2.9.6\build\linq2db.MySql.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\linq2db.MySql.2.9.6\build\linq2db.MySql.props'))" />
  </Target>

Beide stehen untereinander in der Datei.
Ich kann hier leider nur Vermutungen anstellen.
30.04.2020 15:21 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 14.033
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

30.04.2020 16:02 Beiträge des Benutzers | zu Buddylist hinzufügen
danieljena danieljena ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.11.2015
Beiträge: 38
Entwicklungsumgebung: VS2019CE

Themenstarter Thema begonnen von danieljena

danieljena ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Soooo, gestern gab es noch den Durchbruch, es geht wieder alles.
Was habe ich gemacht:
Die beiden geposteten Xml-Groups in der *.csproj kamen mir etwas komisch vor. Hab von der Datei nen Backup angelegt, die beiden Abschnitte gelöscht und ... siehe da es geht wieder.

Gleichzeitig bin ich nun auch gleich noch von packages.config auf PackageReference umgesprungen, aber das nur so am Rande erwähnt.
01.05.2020 12:24 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 3 Monate.
Der letzte Beitrag ist älter als 3 Monate.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 15.08.2020 03:59