Im Visual-Studio fehlten mir ein paar Features - v.a. die Möglichkeit, jederzeit ein Backup zu machen.
Ja, Fange ich doch gleich mit den Features an.
Im Grunde ist die ganze aufwändige Anzeige überflüssig, und es täten die Menüpunkte 2. - 5. ausreichen - ich hab die Anzeige vor allem während der Entwicklung gebraucht
Funktionsweise
SolutionExplorer liest das .sln-File ein, und analysiert, welche Projekt-Dateien ("vbProj/csProj") in der Solution zusammengebunden sind.
Dann öffnets die ProjektDateien und liest aus dem Xml aus, welche Dateien zum jeweiligen Projekt gehören.
Das ganze Zeug wird in ein typisiertes Dataset eingetragen (ja - ich kannnix anneres ), und aus dem wird dieser hübsche Treeview aufgebaut.
Ja damit habichdann die Kontrolle über die Solution, und kann damit treiben, was erforderlich ist (kopieren, Text-Ersetzungen, zippen).
Installations-Schritte
Ich empfehle übrigens, im DateiBrowser die (idiotische) Option "bekannte Datei-Endungen ausblenden" zu deaktivieren - dann findet man die
Der Code
Wie mein RegexTester auch, ist SolutionExplorer ein altes Projekt von mir, und daher würdich heute wieder vieles anders machen. Und die Kommentierung ist ebenfalls nicht lehrbuchmäßig für Einsteiger, sondern richtet sich an - ich sag mal: Fortgeschrittene (nämlich an mich selbst )
Bei der Überarbeitung für den Upload waren bisserl umfangreichere Umbauten nötig - also wenn ihr Bugs findet - bitte lasstes mich wissen, vorzugsweise per PM, um diesen Thread nicht überlang zu machen.
Issues
Das Bildchen
zeigt den SolutionExplorer, wie er sein eigenes Solution-File geöffnet hat. Leider ist der komplette Dateipfad nicht ganz zu lesen, da tief verschachtelt.
Aber es sind 2 Projekte erkennbar, vom SolutionExplorer-Projekt sind die Dateien aufgeführt (ViewMode.UserCode_Only: also nur die kompilierbaren Dateien), und der Treeview.
History (2010-Version)
Ja, Fange ich doch gleich mit den Features an.
- SolutionExplorer ist so eingerichtet, dass er eine Solution über den DateiBrowser öffnet, DateiBrowser-Kontextmenü "Öffnen mit..."
- verzippt mit einem Click alle in der Solution eingebundenen Sources und Resources.
Compile-Ausgaben und andere Dateien, die nicht im Projekt-Explorer der IDE aufgeführt sind, werden nicht mit aufgenommen (schlanker Zip).
Die Zips werden durchnummeriert im "...\SolutionVerzeichnis\BackZip" abgelegt. Sie sind nach entpacken sofort lauffähig, sofern alle erf. Dateien auch in die Solution eingebunden sind.
Der Pfad des Zips wird außerdem in die Windows-Zwischenablage kopiert, für besonders eilige Uploads ;).
(Da kann man nämlich hier im Forum unter Dateianhänge ohne "Durchsuchen" gleich einpasten und up damit) - erstellt einen Solution-Clone
Das wird selten gebraucht - ist einfach die Vorstufe eines Zips, nur halt unverzippt. - CreateTemplateChild
Das ist was sehr feines. Man gibt einen neuen Namen für die Solution an, und SolutionExplorer erstellt einen umbenannten Clon.
Auf diese Weise ist jedes Projekt Vorlage (Template) für weitere Projekte.
Ich habe mir extra VorlagenProjekte für Dataset-Anwendungen, Datenbank-Anwendungen, Konsole und WPF gemacht.
Da kann ich nun einfach einen TemplateChild anlegen, und habe sofort ein Projekt, mit einem leeren Form, und dem gesamten Infrastruktur-Code, den ich mir dann und wann für diesen Bedarf zurechtgecodet habe.
Falls ich für eine Idee schon ein leidlich verwendbares Projekt habe, wassich "nur" variieren muß, dann nehme ich natürlich dieses als Template, anstelle eines meiner VorlagenProjekte.
Meine Solutions bestehen immer aus dem eigentlichen Projekt, und weiteren "Helper-Projekten" mit sog. "Infrastruktur-Code", auf den ich aus vielen Projekten zurückgreifen kann.
Helper-Projekte liegen in einem anderen Ordner, nicht unterhalb des eigentlichen Solution-Ordners. Daher werden sie nicht mit-geklont, wennich ein TemplateChild erstelle, sondern der TemplateChild nimmt den Verweis auf den Helper mit hinüber.
Ich starte also nie die IDE direkt, sondern suche gleich im DateiBrowser die Solution auf, die ich haben will. So habe ich eine bessere Kontrolle, wo die IDE mir meine Sachen hinspeichert.
Und wenn ich ein neues Projekt anlege, mussichmich nicht durch die dummen IDE-Dialoge klicksen, die "WindowsApplication1" umbenennen, klarmachen, wo ich das Projekt hinhaben will, etc., sondern ich wähle ein bereits bestehendes Projekt aus, mache einen TemplateChild, und kann damit loslegen, mit einem ordentlich benamten Projekt, schon mit MainForm drin, incl. Menüstrip, und allen erforderlichen Verweisen - (Ich schiebe die Besprechung der nächsten beiden Menüpunkte nach hinten, und mach weiter mit) "Convert":
Damit kann ich Veränderungen am SolutionFile vornehmen, etwa eine mit Ultimate-Edition erstellte Solution umwidmen für Express-Editions, damit "Low-Budget"-Programmierer die auch direkt öffnen können.
Auch kann ich Files wählen, und deren Encoding switchen, zwischen Utf8 und Ansi. Das braucht man aber nur selten, etwa wenn man ander Leuts Solution anguckt, und da Encoding-Mismatches auftreten.
Ist auch sone Sache, damit hat man natürlich auch blitzgeschwind einen Encoding-Mismatch verbrochen (Aber Backup machen ist jetzt ja kein Thema mehr ). - Jo, die vorhin übersprungenen Menüpunkte beziehen sich rein auf die Anzeige: Reload lädt die Solution neu in den SolutionExplorer - eigentlich unnötig, denn der aktualisiert eh vor jedem Backup-, Clone-, TemplateChild-machen
- Dann gibts da noch eine Combo, mit der kann man die angezeigten Dateien filtern: Entweder nur Source-Codes, oder alles, oder die Helpers-Projekte ausschließen
- SolutionExplorer unterstützt auch c#-Projekte
Im Grunde ist die ganze aufwändige Anzeige überflüssig, und es täten die Menüpunkte 2. - 5. ausreichen - ich hab die Anzeige vor allem während der Entwicklung gebraucht
Funktionsweise
SolutionExplorer liest das .sln-File ein, und analysiert, welche Projekt-Dateien ("vbProj/csProj") in der Solution zusammengebunden sind.
Dann öffnets die ProjektDateien und liest aus dem Xml aus, welche Dateien zum jeweiligen Projekt gehören.
Das ganze Zeug wird in ein typisiertes Dataset eingetragen (ja - ich kannnix anneres ), und aus dem wird dieser hübsche Treeview aufgebaut.
Ja damit habichdann die Kontrolle über die Solution, und kann damit treiben, was erforderlich ist (kopieren, Text-Ersetzungen, zippen).
Installations-Schritte
- Kompilieren, vorzugweise als "Release"
- Optional: Den Ordner mit der Kompilier-Ausgabe umbenennen und an einen sinnvollen Ort verschieben.
- Im DateiBrowser: Rechtsklick auf irgendeine Solution, und im KontextMenü "Öffnen mit" - "StandardProgramm auswählen..." anwählen.
- "Durchsuchen..." - nämlich nach der SolutionExplorer.exe, wo ihr sie hingeschoben habt.
- Wichtig! Sicherstellen, dass die Checkbox "Datei immer mit diesem Programm öffnen" nicht gecheckt ist! Ansonsten öffnet in Zukunft bei Doppelklick auf eine Solution nicht mehr VisualStudio die Solution, sondern nurnoch der Solution-Explorer.
Schritt 5. erzeugt für die Zukunft im DateiBrowser-KontextMenü "Öffnen mit..." einen Eintrag für den Solution-Explorer, mit dem ihr nun jedes Solution-File öffnen könnt. Die Standard-Registrierung, dass eine Solution bei Doppelklick vom VisualStudio geöffnet wird, bleibt dabei unangetastet.
Ich empfehle übrigens, im DateiBrowser die (idiotische) Option "bekannte Datei-Endungen ausblenden" zu deaktivieren - dann findet man die
.sln
- Files auch leichter.Der Code
Wie mein RegexTester auch, ist SolutionExplorer ein altes Projekt von mir, und daher würdich heute wieder vieles anders machen. Und die Kommentierung ist ebenfalls nicht lehrbuchmäßig für Einsteiger, sondern richtet sich an - ich sag mal: Fortgeschrittene (nämlich an mich selbst )
Bei der Überarbeitung für den Upload waren bisserl umfangreichere Umbauten nötig - also wenn ihr Bugs findet - bitte lasstes mich wissen, vorzugsweise per PM, um diesen Thread nicht überlang zu machen.
Issues
- SolutionExplorer berücksichtigt nicht die versteckte Datei "XySolution.suo", in der VisualStudio niederlegt, welche Fenster als letztes geöffnet waren, und welches Projekt als Start-Projekt festgelegt ist.
Dadurch kann, wenn eine Solution mehrere Projekte enthält, beim erstmaligen Entpacken eines Zips ein falsches StartProjekt eingestellt sein (ihr kriegt dann vlt. den LaufzeitFehler "eine Klassenbibliothek kann nicht Startprojekt sein").
Dann muß man das Startprojekt eben wieder richtig setzen (ProjektExplorer-Kontextmenü)
Alternativ kann man, bevor man zippt, die .sln-Datei im Editor öffnen, und das gewünschte Startprojekt händisch an die erste Stelle setzen, denn wenn VS keine .suo-Datei vorfindet, legt es das erste vorgefundene Projekt als Startprojekt fest.
Beispiel (.sln-Datei des SolutionExplorers):Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Helpers", "Helpers\Helpers.vbproj", "{BC2C4D33-E3C0-4AE8-9B56-D42F497EAF83}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "SolutionExplorer", "SolutionExplorer\SolutionExplorer.vbproj", "{5147727F-1E21-4A97-B5D4-BC4CF299A409}"
EndProject
...
Also ändert man auf
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "SolutionExplorer", "SolutionExplorer\SolutionExplorer.vbproj", "{5147727F-1E21-4A97-B5D4-BC4CF299A409}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Helpers", "Helpers\Helpers.vbproj", "{BC2C4D33-E3C0-4AE8-9B56-D42F497EAF83}"
EndProject
...
- Beim Absturz gleich beim Öffnen einer Solution ist zuerst zu überprüfen, ob die Solution überhaupt funktionstüchtig ist - also in der IDE angucken.
ZB. eingebundene Dateien, die fehlen (etwa durch den DateiBrowser gelöscht), sind problematisch
Das Bildchen
zeigt den SolutionExplorer, wie er sein eigenes Solution-File geöffnet hat. Leider ist der komplette Dateipfad nicht ganz zu lesen, da tief verschachtelt.
Aber es sind 2 Projekte erkennbar, vom SolutionExplorer-Projekt sind die Dateien aufgeführt (ViewMode.UserCode_Only: also nur die kompilierbaren Dateien), und der Treeview.
History (2010-Version)
- 23.1.2018: meine
Enum.NameOf()
-Extension rausgeworfen, weil ab 2015 erzeugt das eine Namens-Kollision mit dem dortigen neuenNameOf
-Operator. - 21.5.11: Es scheint Probleme mit annere Windowse zu geben. Auf meiner Virtuellen Maschine läufts aber, mit Win7 und XP - auf Vista isses ja entwickelt.
Also ich hab jetzt nochmal Exe-Ordner reingestellt, und das Verhalten des SolutionExplorers, wenner direkt gestartet wird, modifiziert - 9.12.2013: a) Konvertierungs-Funktionen versch VisualStudio-Versionen, b) Einstellbarkeit der TargetPlatform. c) mit TargetPlatform.AnyCPU konfiguriert
- 12.9.16: 2008er Versionen entfernt, Code so geändert, dass CompilerWarnings ausbleiben, paar Klassen aus den Helpers rausgeworfen (v.a. um einem Namenskonflikt in VS2015 zu entgehen)
Dieser Beitrag wurde bereits 15 mal editiert, zuletzt von „ErfinderDesRades“ ()