Umbenennen und mehrfache Verwendung von Dateien innerhalb einer Projektmappe/eines Projekts

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Marcus Gräfe.

    Umbenennen und mehrfache Verwendung von Dateien innerhalb einer Projektmappe/eines Projekts

    Die Frage ist evtl. allgemein auf Visual Studio zu beziehen, aber vielleicht gibt es Besonderheiten bei VB. Ich verwende VS 2019 und Framework 4.7.2.

    Ich habe eine Projektmappe mit zwei Projekten. Es handelt sich um das Hauptprogramm und das Konfigurationsprogramm.

    Meine erste Frage bezieht sich auf Dateien innerhalb einer Projektmappe:
    Kann ich eine Datei mehrfach, d. h. in mehreren Projekten verwenden, und zwar nicht als Kopie, sondern als Verknüpfung? Ich weiß, dass ich im Hinzufügen-Dialog "als Link hinzufügen" wählen kann. Allerdings gab das, zumindest bei einem DataSet, Probleme. Der Compiler hat dann gemeckert, dass irgendwas mehrfach deklariert wurde (genaues ist mir gerade entfallen). Oder ist ein DataSet ein Spezialfall? Ein nicht unerheblicher Teil meiner beiden Projekte ist identisch (die Konfiguration ins Hauptprogramm zu machen, ist allerdings keine Alternative für mich).

    Bevor ich evtl. den Begriff "DataSet" falsch verwende: Ich meine die Datei, die erzeugt wird, wenn ich eine Verknüpfung mit einer Datenbank (hier SQlite) mit dem Assistenten herstelle und mir ein typisiertes DataSet erzeugen lasse. In der grafischen Ansicht habe ich dann die Tabellen und Felder.

    Die 2. Frage bezieht sich auf das Umbenennen von Dateien innerhalb eines Projekts. Als ich das besagte DataSet umbenennen wollte, bekam ich eine Fehlermeldung. Die Umbenennung ist dadurch nur zur Hälfte umgesetzt worden und mein Projekt war komplett zerschossen, ich musste ein Backup wiederherstellen. Kann ich DataSets also nicht umbenennen?

    Und was ist mit anderen Dateien? Forms, Module und ApplicationEvents-Dateien gehen scheinbar. Was ist mit packages.config, App.config und anderen Dateien (die ich derzeit noch nicht habe)? Kann ich die theoretisch immer umbenennen? Hintergrund: Wenn ich eine Datei offen habe, kann ich scheinbar nicht sehen, zu welchem Projekt die gehört. Das verwirrt sehr. Z. B. hießen meine Hauptforms jeweils FrmMain. Eins habe ich nun in FrmMainCfg umbenannt. Ich möchte vermeiden, dass ich wieder das Projekt zerstöre.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Was ist, wenn Du gleiche Teile in eine projektmappenweite DLL auslagerst und diese von beiden Programmen nutzen lässt?
    Das DataSet kann schon umbenannt werden. Bei einem Testprojekt musste ich allerdings die Projektmappe schließen und wieder öffnen, dann war alles wieder gut. Tabellen umzubenennen ist schwieriger, weil BindingSources mit ihrer DataMember-Property zwar auf einen Tabellennamen verweisen - der allerdings als String angegeben wird. Und der wird nicht automatisch bei einer Umbenennung geändert.


    Im Projektmappenexplorer sieht man doch sehr gut, zu welchem Projekt die aktuell geöffnete Datei gehört.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    VaporiZed schrieb:

    Was ist, wenn Du gleiche Teile in eine projektmappenweite DLL auslagerst

    Ich würde gerne so wenige externe Dateien haben wie möglich. Zudem finde ich eine DLL in dem Fall irgendwie Overkill.

    VaporiZed schrieb:

    Bei einem Testprojekt musste ich allerdings die Projektmappe schließen und wieder öffnen

    Genau das war bei mir der Todesstoß. Hast du das DS über den Projektmappenexplorer umbenannt?

    VaporiZed schrieb:

    Tabellen umzubenennen ist schwieriger

    Das habe ich nicht vor.

    VaporiZed schrieb:

    Im Projektmappenexplorer sieht man doch sehr gut, zu welchem Projekt die aktuell geöffnete Datei gehört.

    Im Projektmappenexplorer sehe ich das nicht. Oder was genau meinst du? Egal welche Datei ich gerade offen habe, im Projektmappenexplorer ändert sich dadurch gar nichts.

    Allerdings sehe ich gerade, dass direkt unter dem Tab mit dem aktuellen Code-Modul in der ersten Auswahlliste der Projektname steht. Allerdings nur bei der Quellcodeansicht, nicht beim Designer.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum

    Marcus Gräfe schrieb:

    Hast du das DS über den Projektmappenexplorer umbenannt?
    Ja, habe ich.
    Also, bei VS2019CE sehe ich da schon einen Unterschied im Explorer. Im Anhang 2 Bilder. Die Projektmappe enthält 2 Projekte, beide haben eine Datei namens FrmMain. Wenn man eine davon auswählt, wird im Projektmappenexplorer diese auch (bei mir schwach) hervorgehoben. Ggf. kann man die Farbmarkierung noch ändern.
    Bilder
    • PME1.png

      31,16 kB, 655×548, 119 mal angesehen
    • PME2.png

      44,45 kB, 695×623, 114 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Das muss dann irgendeine Einstellung sein, die ich noch nicht gefunden habe. Bei mir tut sich definitiv nichts. Es bleibt die Datei markiert, die ich selber markiert habe (oder gar keine, wenn eben keine markiert war).

    Beim Umbenennen des DataSets erhalte ich diesen Fehler:



    Aber grundsätzlich kann ich alle Dateien umbenennen, die in einem Projekt enthalten sind?

    Ich habe soeben mal einen kleinen Test bzgl. doppelt verwendeter Dateien gemacht, also Verlinkung einer Datei in einem anderen Projekt. Bei einem simplen Modul mit einer Funktion gibt's keinen Fehler. Also ist es wohl nur das DataSet.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Na Moment. Die Datei, die Du umbenennen solltest, ist aber nicht die DataSet2.Designer.VB, sondern die darüberliegende DataSet2.xsd. Die Designer.vb wird danach automatisch mit umbenannt.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Folgendes konnte ich jetzt feststellen. Wenn der Dateiname gleich dem tDS-Namen ist (also Datei heißt z.B. DsTables.xsd, das tDS heißt DsTables (zu sehen im DataSet-Designer bei Eigenschaften)), wird bei Umbenennung der Datei(en) gefragt, ob das tDS auch umbenannt werden soll. Wenn man das nicht macht, läuft alles und man kann ohne weitere Nachfragen die Dateien nochmals umbenennen. Ändert man danach den Names des tDS, gehen die auf die Forms gezogenen tDS-Objekte flöten. Benennt man sie aber im Zuge der Dateiumbenennung mit um, hagelt es erstmal Fehlermeldungen, die nach Schließen und Wiedereröffnen des Projekts Geschichte sind.
    Benennt man aber nur das tDS im DataSet um, sollte man wohl keinen Form-Designer offen haben, danach dann das Projekt bereinigen und neu kompilieren, ggf. nochmal Projekt schließen und öffnen und dann sollte Form.Designer normal laufen. Tricky.
    Würde mich nicht wundern, wenn es da noch zig andere Wege gibt.
    Also kurz: Vor Umbenennung der XSD alle Form-Designer schließen, das tDS ggf. mit umbenennen, dann Projekt bereinigen und neu kompilieren, sicherheitshalber Projektmappe schließen und wieder öffnen und dann sollte alles klappen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Alles klar, danke.

    Ich habe nun übrigens herausgefunden, wie man das aktuelle Objekt im Projektmappen-Explorer highlighten kann. Unter stackoverflow.com/questions/12…-explorer-to-current-file steht es:
    Extras - Optionen - Projekte und Projektmappen - Allgemein - Aktives Element im Projektmappen-Explorer überwachen

    Standardmäßig ist das ausgeschaltet.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    @VaporiZed Kurze Rückmeldung:
    Die Umbenennung des DataSets klappt nun grundsätzlich. Dass nach dem Umbenennen nichts mehr ging lag nämlich an was anderem. Der Code wurde beim Umbenennen natürlich neu generiert und dadurch trat dieses Problem (mittlerweile mehr oder weniger gelöst) zum Vorschein: SQlite-DataSet: "Fehler BC30456 '"Mein_Projekt" ist kein Member von "Global"" nach jeder Änderung im DataSet-Designer

    Allerdings klappte das Umbenennen nur einmal! Ich hatte das DS testweise wieder zurückbenannt und dann wieder zum neuen Namen und jetzt geht es nicht mehr, keine Chance. Ich kann es aber nun wieder zum ursprünglichen Namen bringen (nach deiner Anleitung) und dann geht es wieder.

    Das mehrfache Verwenden eines DataSets innerhalb einer Projektmappe scheint aber unmöglich zu sein. Ich konnte dazu auch im Prinzip nur unbeantwortete Fragen im Internet finden.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Ich meine sowas hier:


    Ich dachte, wenn ich das einmal angelegt habe, wäre es das beste, wenn ich in zwei Projekten, die auf die selbe DB zugreifen, dieselbe Datei verwende. Dann müsste ich Änderungen nur einmal einpflegen.

    EDIT: In einem Testprojekt hat das Umbenennen nun übrigens wieder überhaupt nicht geklappt. Das DataSet ist echt widerspenstig...

    EDIT 2: Und noch als Ergänzung zu meiner Ursprungsfrage bzw. Antwort darauf: Die App.config kann man auch nicht umbenennen, die wird danach nämlich neu erstellt.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum

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

    Marcus Gräfe schrieb:

    wenn ich in zwei Projekten, die auf die selbe DB zugreifen, dieselbe Datei verwende.
    In dem Falle musst du ein drittes Projekt erschaffen vom Typ Klassenbibliothek, und darin das Dataset anlegen.
    Und dieses dritte Projekt wird von beiden anderen eingebunden.
    Video: HelperProjekt einbinden
    Danke, wird wohl wirklich die einzige Lösung sein. In meinem Fall werde ich nun allerdings das DataSet doch zwei Mal jeweils neu erstellen, weil ich nicht noch eine zusätzliche DLL haben möchte.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum