Stand: 23.03.2014

OaksMigrateMenu - Funktionsbeschreibung

Hintergund

Ich habe einiges mit VisualStudio 2003 entwickelt und war sehr neugierig auf die Version 2005. Neben vielen Verbesserungen wurden auch die Komponenten MainMenu, ContextMenu und StatusBar weiter entwickelt. Leider werden die alten Komponenten beim Upgrade eines Projektes zur Verwendung in VisualStudio 2005 nicht in die neuen Komponenten MenuStrip, ContextMenuStrip und StatusStrip migriert, sondern unverändert übernommen. Um die neuen Komponenten verwenden zu können, müssen diese mühsam zu Fuß neu aufgebaut werden (Texte kopieren, ShortCuts kopieren, …). Genau hier setzt OaksMigrateMenu an: Die alten Komponenten werden automatisiert in die Neuen umgesetzt, sodass ältere, migrierte Projekte von all der Pracht und Vielfalt der neuen Komponenten profitieren können {8-).

Da ich in meinen Programmen relativ häufig ein StatusBarpanel oder ein MenuItem als Parameter übergebe, werden auch alle Definitionen eines StatusBarpanels in die Definition eines ToolStripStatusLabels bzw. ein MenuItem in ein ToolStripMenuItem umgesetzt.

 

Wie geht es ?
  1. VB-Projekt einmal in VisualStudio 2005 laden und dadurch konvertieren, VS 2005 wieder beenden
  2. OaksMigrateMenu: VB-Projektdatei auswählen (Projekt -> Öffnen
  3. OaksMigrateMenu: Gefundene Komponenten migrieren (Projekt -> Migrieren). Es werden nur gecheckte Files, Komponenten und Sourcezeilen migriert, sie können durch Wegnahme des Check-Hakens einzelne Komponenten von der Migration ausnehmen
  4. Die Forms mit den migrierten Komponenten in VS 2005 nachbearbeiten

 

 Anmerkungen:
  • Das VB-Projekt darf während der Migration nicht im VS geöffnet sein !
  • Es werden nur die Typen der definierten Komponenten geändert, nicht aber die Namen. Dadurch bleiben auch die originalen Event-Prozeduren und sonstige Properties erhalten (soferne sie in den neuen Komponententypen enthalten sind!)
  • Die Forms-Files werden unter „Originalname.vb.mymig _Datum-Uhrzeit“ abgelegt. Sollte die Migration aus unerklärlichen Gründen nicht geklappt haben -> Nicht verzagen, sondern die Files auf die Originalnamen zurückkopieren (geht mit Projekt -> Gesicherte Files anzeigen bzw. Projekt -> Gesicherte Files zurücklegen für die letzte gesicherte Version, sonst bitte händisch kopieren)
  • Wurden bei Shortcuts die Ziffern 0-9 verwendet, werden diese auf die Zifferntasten der Tastatur umgesetzt, nicht auf die der numerischen Tastatur
  • Manchmal werden Sourcefiles ohne migrierbare Elemente angezeigt. Dies kann daran liegen, dass diese Files schon bearbeitet wurden oder Sourcezeilen auskommentiert sind, die Definitionen für eigentlich migrierbare Elemente enthalten. Enthalten angezeigte Files keine migrierbaren Elemente, werden diese Files auch nicht angegriffen
  • Leider wird für MenuStrips nicht – wie früher bei MainMenu – automatisch Platz in einer Form reserviert, sondern der MenuStrip über schon vorhandene Komponenten drübergezeichnet. Sie müssen also nach der Migration von MainMenu höchstwahrscheinlich das Form-Layout etwas anpassen, um Platz für das zu einem MenuStrip migrierte MainMenu zu schaffen (Kleiner Tip: Dock für das MenuStrip-Control auf None setzen, Menustrip verschieben, Form anpassen, MenuStrip wieder platzieren und Dock auf Top setzen)
  • Ich empfehle, nach der Migration jede Form im VS 2005 zu kontrollieren und frisch abzuspeichern, damit das von OaksMigrateMenu geänderte Form-File wieder das von VS gewünschte Layout erhält
  • Es kann durchaus vorkommen, dass etwas händische Nacharbeit notwendig ist. Werden zB. im Code Properties oder Methoden von Komponenten angesprochen, die das migrierte Objekt nicht besitzt, müssen Sie den Code händisch anpassen
  • Für Neugierige: Jedes aktuell migrierte File wird auch unter „Originalname.vb.mymig _new.txt“ abgespeichert, bei Bedarf kann dieses File mit einem beliebigen Editor nachbearbeitet und – nach Ablage unter „Originalname.vb“ – von VS 2005 verwendet werden


Was passiert genau

In einem gewählten Projektfile werden alle dem Projekt zugeordneten Sourcefiles untersucht, ob eine der folgenden Bedingungen zutrifft:

  • Deklaration eines MainMenus
  • Deklaration eines ContextMenus
  • Deklaration eines StatusBars
  • Übergabe eines MenuItems als Parameter
  • Übergabe eines StatusBarPanels als Parameter

 Die durch diese Bedingungen identifizierten Files können im Weiteren zur Migration ausgewählt werden. Folgende Migrationen werden vorgenommen:

  • Deklaration eines MainMenus => Deklaration eines MenuStrips
  • Deklaration eines ContextMenus => Deklaration eines ContextMenuStrips
  • Deklaration eines StatusBars => Deklaration eines StatusStrips
  • Deklaration eines MenuItems => Deklaration eines ToolStripMenuItems
  • Deklaration eines MenuItems mit dem Text "-" => Deklaration eines ToolStripSeparators
  • Deklaration eines StatusBarPanels => Deklaration eines ToolStripStatusLabels
  • Übergabe eines MenuItems als Parameter => Übergabe eines ToolStripMenuItems als Parameter
  • Übergabe eines StatusBarPanels als Parameter => Übergabe eines ToolStripStatusLabels als Parameter

 

   
© ALLROUNDER