SolutionExplorer - OpenSource

    • VB.NET

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

      Hallöle,

      hat man nicht via Rechtsklick auf eine Solution-File (.sln) den Solution-Explorer geöffnet, kam eine Fehlermeldung weil keine Datei geladen wurde und
      der Solution-Explorer hat sich beendet.

      Ich hab für alle Interessenten mal ein Update eingebaut, welches bei direkter Öffnung der .exe "SolutionExplorer.exe" einfach nach einer Solution fragt.
      Die wählt man dann aus und das Programm läuft :)

      Einfach über Release selbst kompilieren und Spaß dran haben. @ErfinderDesRades: Gutes und nützliches Tool :thumbup:

      Spoiler anzeigen

      VB.NET-Quellcode

      1. Private Function SolutionFromEnvironment() As String
      2. With Environment.GetCommandLineArgs
      3. Select Case .Length
      4. Case 2
      5. Return .ElementAt(1)
      6. Case 1
      7. Dim lines = {
      8. "SolutionExplorer erwartet den Namen der ZielSolution als Kommandozeilen-Argument.",
      9. "Wie ihm am einfachsten die ZielSolution mitzuteilen ist, sollten Sie auf",
      10. "http://www.vb-paradise.de/allgemeines/sourcecode-austausch/57189-solutionexplorer-opensource/",
      11. "nochmal nachlesen.",
      12. "",
      13. "Sie können jetzt aber eine Solution auswählen"} _
      14. '"Jetzt jedenfalls wird Directory-aufsteigend irgendeigene Solution gesucht"}
      15. MessageBox.Show(Lf.Between(lines), "ZielSolution wurde nicht angegeben")
      16. 'Edit Tragl 05.05.2020: App wird nicht mit Exception beendet, sondern bietet nun Suche
      17. 'für SLN-File an.
      18. Dim fi As FileInfo
      19. Using fiDlg As New OpenFileDialog()
      20. fiDlg.Filter = "Solution-Dateien (*.sln)|*.sln"
      21. If fiDlg.ShowDialog() = DialogResult.OK Then 'ausgewählte Solution öffnen
      22. fi = New FileInfo(fiDlg.FileName)
      23. Return fi.ToString
      24. Else 'Anwendung beenden
      25. MessageBox.Show("keine Datei ausgewählt, Anwendung wird beendet!")
      26. Me.Close()
      27. End If
      28. End Using
      29. Case Else
      30. Throw New NotUniqueException("Befehlszeilenargumente", .Length - 1)
      31. End Select
      32. End With
      33. End Function
      Dateien
      "Na, wie ist das Wetter bei dir?"
      "Caps Lock."
      "Hä?"
      "Shift ohne Ende!" :thumbsup:

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

      @ErfinderDesRades Ich hab mal ein ToolStripMenuItem hinzugefügt: ItemChangeSolution.
      Damit kann die nächste Solution geladen werden.
      Da das Programm sich mit neuer Kommandozeile selbst startet, wird dabei das Debugging beendet, sofern debugt wurde.
      Diese Prozedur in einem neuen MenuItem aufrufen und feddich.

      VB.NET-Quellcode

      1. Private Sub RestartSolutionExplorer()
      2. Using dlg As New OpenFileDialog
      3. dlg.Filter = "Solution Files|*.sln|All Files|*.*"
      4. If dlg.ShowDialog() <> DialogResult.OK Then
      5. Return
      6. End If
      7. ' Get the full qualified path to the own executable
      8. Dim path = System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase
      9. Dim processInfo = New ProcessStartInfo()
      10. ' SolutionExplorer
      11. processInfo.FileName = path
      12. ' the next solution
      13. processInfo.Arguments = dlg.FileName
      14. ' Start new program window
      15. Process.Start(processInfo)
      16. ' Close old program window
      17. Me.Close()
      18. End Using
      19. End Sub
      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!
      Wie gesagt: Ich hab SolutionExplorer so konzipiert, dasser aussm DateiBrowser zu starten ist, per KontextMenü des .sln-Files, auf dem man arbeitet.
      Er ist also quasi eine Funktions-Erweiterung des Standard-DateiBrowsers, und dazu muss man post#1: "Installations-Schritte" noch bewältigen.
      Ist das geschafft, so muss man weder
      • wie in post#25 die SolutionExplorer.exe suchen, starten und dann erst die Ziel-Solution suchen
      • noch wie in post#26 sich durch einen OpenFileDialog klicksen.
      Ich hab in meinem DateiBrowser meine .Net-Entwicklungs-Verzeichnisse als Favoriten eingerichtet - da finde ich mich sehr schnell zurecht.
      Aber wenn man durch den OpenFileDialog will - wäre es da nicht sinnig, einen SelectedPath schoma vorzugeben?
      ZB dasser gleich auf den Ordner der aktuellen Solution öffnet? (oder eins darüber?) Der Ordner dürfte ja in der Nähe dessen liegen, wo man denn hinwill.
      Das ist korrekt.
      Allerdings ist meine Herangehensweise anders, Dein SolutionExplorer ist für mich ein Tool wie andere auch.
      Ich arbeite primär mit dem Studio und einem Quellcode-Verwaltungssystem, damit hat Deine Prämisse, jederzeit ein Backup machen zu können, für mich keine Priorität.
      Was ich hingegen sehr nützlich finde, ist die Möglichkeit, eine Solution für eine bestimmte Studio-Version zu taggen.
      Wenn ich ein VS2010er Projekt per Doppelklick öffne, wird das Studio 2017 bemüht, obwohl ich es lieber mit Studio 2013 öffnen möchte.
      In diesem Kontext ist das Öffnen eines weiteren Projekts mit dem SolutionExplorer eine Nützlität, zumal das Framework automatisch den zuletzt verwendeten Pfad voreinstellt.
      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!
      @OliverSte Ein Projekt hat genau eine SLN-Datei.
      Die Einzel-Projekte in dieser SLN-Datei werden vbproj bzw. csproj-Dateien beschrieben.
      Deren Inhalt (die eine SLN und die kommunizierenden vbproj und csproj) wird gemeinsam gezippt.
      In welchem Verhältnis steht die offensichtlich nicht zum Ausgangsprojekt gehörende SLN-Datei zum Ausgangsprojekt?
      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!
      Ah so. Danke für die Aufklärung.
      Ich wunderte mich, dass in einem Subprojekt im Backup Verweise nicht aufgelöst werden konnten und hab das dann mal direkt öffnen wollen, um das zu reparieren. VS meckert dann herum, dass keine NuGet Pakete verwaltet werden können, ohne das das Projekt gespeichert wird u.s.w.
      Hab ich wohl falsch gemacht und muss die Verweise im Hauptprojekt reparieren. Warum eigentlich?
      @OliverSte Du kannst ja mal ein wenig experimentieren und die zweite SLN-Datei einem Projekt (vbproj, csproj) hinzufügen.
      Selbst Text-Dateien (TXT) lassen sich Projekten hinzufügen.
      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!