Projekte und Projektmappen - .vbproj vs. .sln

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Projekte und Projektmappen - .vbproj vs. .sln

    Hi,

    wenn ich ein gespeichertes Projekt öffnen will, kann ich entweder die Datei myProject.sln verwenden ... oder (eine Ebene tiefer) die Datei myProject.vbproj.

    Was ist eigentlich der Unterschied? In beiden Fällen lande ich in meinem Projekt.

    In einem meiner Projekte ist die Datei myProject.sln nicht in dem sonst üblichen Ordner gelandet. Wenn ich die Datei myProject.sln nun in einen anderen Ordner verschiebe, dann wird sie unbrauchbar. Fehlermeldung: Mindestens ein Projekt in der Projektmappe wurde nicht ordnungsgemäß geladen. Projekt nicht verfügbar. Die Projektdatei oder das Web wurde nicht gefunden.

    Wieso das? Wie kann man den so eine Datei verschieben oder ggf. neu erstellen?

    Gibt es irgendwo eine Doku, wie die Dateistruktur vom Visual Studio aufgebaut ist? Irgendwie bin ich da nicht so recht fündig geworden.

    LG
    Peter

    *Topic verschoben*

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Marcus Gräfe“ ()

    In Visual Studio werden nicht einzelne Projekte, sondern Projektmappen angelegt, die von Beginn halt nur ein Projekt enthalten. Die .vbproj und auch alle anderen .*proj Dateien sind die Indexdateien der einzelnen Projekte, die .sln-Datei ist die Indexdatei der Projektmappe.

    Peter329 schrieb:

    Was ist eigentlich der Unterschied?
    Die SLN beschreibt den Projektrahmen, die "Projektmappe", und die Pfade zu den VBPROJ-Dateien der einzelnen Projekte.
    Übrigens:
    Zu einer Projektmappe kannst Du nach belieben vb.net, c#, CLI (managed C++)- und native C++-Projekte hinzufügen,
    außerdem kannst Du Setup-Projekte und Testprojekte für die einzelnen Projekte usw. einbinden.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ok, das hab ich verstanden und das klingt für mich auch einleuchtend: ein .vbproj betrifft ein Projekt ... und ein .sln betrifft eine ganze Projektmappe.

    Nun ist meine myProject.sln Datei - aus welchen Gründen auch immer - in einem "falschen" Ordner gelandet. Wie kann ich das korrigieren. Ich hätte gern, dass all meine Projektmappen die gleiche Struktur aufweisen und würde deshalb die .sln Datei deshalb gern in einen anderen Ordner verschieben. Leider kriege ich da die o.a. Fehler.

    Wie macht man so etwas also?

    LG
    Peter
    Öffne parallel die "schlechte" und eine "gute" und sieh, was nicht stimmt.
    Besser ist es, das Projekt im Editor zu managen, da kannst Du die entsprechende Struktur ebenfalls realisieren.
    Oder
    Willst Du aus einem Single Projekt eine Projektmappe machen?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    wenn man eine .vbproj-Datei öffnet, dann ist VS so gutmütig, in übergeordneten Ordnern nach der .sln zu suchen, weil letztere ist der richtige Einstiegspunkt, um VS zu öffnen.

    Wenn du also eine deplazierte .sln hast, dann deaktiviere die, etwa indem du die Dateiendung nach .slnFail umbenennst.

    Dann findet VS die nicht mehr, öffnet aber noch immer die vbproj.
    Und wenn du nun schließt, fragtes dich, wohin es die .sln generieren soll - was der Moment ist, an dem du den Fehler ausbügeln kannst.
    Supi, beide Ratschläge funktionieren hervorragen, der Edit der .sln Datei ebenso wie der Rename.

    Beim Edit ist mir aufgefallen, dass man die Bedeutung einiger Klauseln ganz gut erraten kann. Andere Stellen der .sln Datei sind hingegen ein wenig kryptisch.

    Quellcode

    1. Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "DirList", "Dirlist\DirList.vbproj", "{58E31C53-9FD1-486E-B899-F31C736A8B15}"


    Was ist denn die Bedeutung dieser hexadezimalen Strings? Werden die vom Studio generiert? Werden diese Strings Bestandteil der erzeugten .exe Files? Wozu werden die gebraucht?

    LG
    Peter
    Die Dinger sehen etwas aus wie GUIDs. Finden tust du sie in den Projekteinstellungen > Anwendung > Assemblyinformationen >GUID.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „nafets3646“ ()

    ErfinderDesRades schrieb:

    sonst ists .sln-File im Eimer.
    @Peter329:: In einem solchen Fall solltest Du nicht versuchen, die Solution-Dateien (SLN, *PROJ) zu reparieren, sondern erstell ein neues Projekt und füge die Quell-Dateien des kaputten Projekts diesem hinzu.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ok, das hab ich verstanden. Ich werde mich hüten die GUIDs auch nur scheel anzugucken! :P

    Ein neues Projekt erstellen ... die Dateien hinzufügen, das sollte im Problemfall die saubere Lösung sein.

    Ansonsten hab ich gelernt, dass man einer Solution per Editor mehrere Projekte hinzufügen kann. Damit kann ich jetzt meine zahlreichen Testprojekte zu einer Projektmappe zusammenfassen, was das Leben ein wenig übersichtlicher macht.

    Vielen Dank, ich hab eine Menge von euch gelernt! :D

    LG
    Peter

    Peter329 schrieb:

    dass man einer Solution per Editor mehrere Projekte hinzufügen kann.
    Das ist nicht erforderlich, das übernimmt das Studio für Dich:
    Datei -> Hinzufügen -> neues Projekt
    Datei -> Hinzufügen -> vorhandenes Projekt
    Wenn die Projekte voneinander abhängen (ein WinForm-Projekt hängt von der importierten DLL ab), musst Du
    1. ein Startprojekt vorgeben:
      in der Projektmappe Rechtsklick drauf -> Als Startprojekt festlegen (das muss eine Exe und kann keine DLL sein)
    2. Projektabhängigkeiten festlegen / Buildreihenfolge überprüfen:
      Studio-Menü: Projekt -> Projektabhängigkeiten
    3. Wenn die Exe von einer DLL abhängt, muss die DLL der Exe als Verweis hinzugefügt werden,
      in diesem Fall (beide gehören einer Projektmappe an) muss das Projekt, nicht aber die Datei ausgewählt werden.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!