none
Unterschiedlicher String abhängig von Debug und Veröffentlichung RRS feed

  • Frage

  • Ich habe einen Pfad-String, der je nachdem, ob das Programm veröffentlicht ist oder nur der Debug läuft, unterschiedlich lauten muss. Kann mir jemand da helfen? Danke ;-)
    Montag, 2. Mai 2011 17:02

Antworten

Alle Antworten

  • Hi,
    Ich habe einen Pfad-String, der je nachdem, ob das Programm veröffentlicht ist oder nur der Debug läuft, unterschiedlich lauten muss. Kann mir jemand da helfen? Danke ;-)

    im Normalfall bringt man sowas in der app.config bzw. web.config (für ASP.NET) unter.

      http://jarloo.com/tips-tricks/appconfig-configurations/

    Es geht aber auch per Code :)

      #IF DEBUG THEN
          MyPath = "Debug"
      #ELSE
          MyPath = "Release"
      #END IF

    Siehe dazu:

      http://msdn.microsoft.com/de-de/library/tx6yas69.aspx

      http://msdn.microsoft.com/de-de/library/64yxa344.aspx

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    • Als Antwort markiert qwerqwerasdf Montag, 2. Mai 2011 19:48
    Montag, 2. Mai 2011 17:17
    Moderator
  • Hallo,

    ich gehe davon aus, Deine Frage steht (indirekt) mit der letzten in Verbindung.

    Über Environment.GetFolderPath kannst Du unterschiedlichste Standard-Verzeichnisse
    über die SpecialFolder Enumeration abrufen.
    Und Deine Angabe über Path.Combine zu einem vollständigen Pfad zusammenstellen.

    Welche Verzeichnisse nach Verwendungszweck in Frage kommen beschreibt u. a.:
    As a developer, how should I use the special folders in Vista (and Windows 7)?

    Zum |DataDirectory| Platzhalter siehe: Where is DataDirectory ?

    Gruß Elmar

    Montag, 2. Mai 2011 17:35
  • Danke für die Antworten, ich habe mir darus jetzt eine Lösung zusammengebastelt, die zu funktionieren scheint. ;)
    Montag, 2. Mai 2011 19:49
  • Irgendwie klappt es doch noch nicht ganz. Kann mir vieleicht jemand eine Variable oder Konstante nennen, die unterschiedlich ist, je nachdm, ob man in VB "Debugging starten" gedrückt hat oder eine instalierte ClickOnce-Anwendung vorliegt? Danke im Voraus. ;)
    Mittwoch, 4. Mai 2011 16:57
  • Hallo,

    hilfreich wäre es zu wissen, was Du da bisher zusammengebaut hast...

    Zeige mal den Code den Du auszuführen möchtest
    (und erläutere auch warum, wenn es nicht offensichtlich ist).

    Gruß Elmar

    Mittwoch, 4. Mai 2011 17:01
  •  If Debugger.IsAttach Then
      cstring = "Data Source = Poke.sdf;Persist Security Info=False;"
     Else
      cstring = "Data Source = " & Application.LocalUserAppDataPath & "\Poke.sdf;Persist Security Info=False;"
     End If
    
    Cstring ist dann mein Connection-String für verschiede Datenbankverbindungen. Wenn ich das Debugge, soll If wahr sein und wenn es auf einem PC instaliert ist, soll If falsch sein. Debugger.IsAttach ist dabei mein derzeit letzter Versuch.

    Hat sich erledigt. Debugger.IsAttach funktioniert doch. ;)
    Mittwoch, 4. Mai 2011 19:54
  • Hallo,

    Debugger.IsAttach funktioniert zwar, aber vermutlich nicht immer so wie Du es gerne hättest.

    Wahr ist die Angabe nur, wenn Du das Programm direkt unter Visual Studio startest (mit F5)
    Startest Du es ohne Debugger (STRG+F5) so wird Falsch zurückgegeben.
    Auch ist es möglich bei einem ausgelieferten Programm einen Debugger anzuhängen (nicht mit Express),
    dann wäre das Ergebnis wieder wahr.

    Insofern kann das Ergebnis vom erwarteten abweichen.

    Grundsätzlich gilt:
    Man sollte immer mit Verzeichnisangaben arbeiten, denn ohne Verzeichnis wird das
    aktuelle Verzeichnis (Environment.CurrentDirectory verwendet, was sich aber zur Laufzeit
    (durch unvorsichtige Komponenten) jederzeit ändern kann.

    Was Application.LocalUserAppDataPath (und auch UserAppDataPath) angeht:
    Der zeigt bei einer Verteilung mit ClickOnce auf das bereits erwähnte DataDirectory.

    Wenn man eine SQL Server Compact Datenbank in Visual Studio/Express einbindet,
    wird sie beim Programmstart in das Programmverzeichnis kopiert.

    Erst wenn man das Programm verteilt wird die Datenbank in das Benutzerverzeichnis kopiert -
    und das wäre der gleiche Wert wie LocalUserAppDataPath.

    Gruß Elmar


     

    Donnerstag, 5. Mai 2011 20:21