Forums Neueste Beiträge
 

Erkennung, ob Ausführung von der IDE aus

12/10/2009 - 12:24 von Uwe Weih | Report spam
Hallo,

wie möchte gerne das bei einer Konsolenapplikation der Errorlevel angezeigt
wird und das Programm am Ende nicht das Konsolenfenster schließt.

Zuerst habe ich es mit einer benutzerdefinierten Konstante bei den
erweiterten Kompileroptionen (SIMULATION=true) gelöst und dann mit
Debug/Release experimentiert, nachdem ich in den Optionen die erweiterte
Buildkonfiguration aktiviert habe und mir Projektmappenkonfiguration im Menü
aktiviert habe. Das gefiel mir aber nicht. Wie es derzeit làuft, also das
bei F5 der Debugger das Programm startet und das Ergebnis unter "\bin\Debug"
landet und bei Erstellung unter "\bin\Release" finde ich Okay. Mit obiger
Einstellung finde ich das nicht so schön getrennt.

Eben mal ausprobiert, wenn ich die erweiterte Buildkonfiguration wieder
deaktiviere und auch den Eintrag im Menü lösche und dann im Quelltext
eintrage:

#If CONFIG = "Debug" Then
Console.WriteLine()
Console.WriteLine("ERRORLEVEL: " + Errorlevel.ToString)
Console.WriteLine("Bitte RETURN drücken")
Console.ReadLine()
#End If

Environment.Exit(Errorlevel)

Ist das so korrekt oder gibt es eine elegantere Möglichkeit?

Und ich glaube, mit der Buildkonfiguration bin ich auch noch nicht so
richtig Freund geworden...

Ach ja, was spricht eigentlich gegen "Console.WriteLine("ERRORLEVEL: " +
Errorlevel.ToString)
" anstatt "Console.WriteLine("ERRORLEVEL: {0}", Errorlevel)"? Lasst mich
tippen: Zeitverlust durch Anlegen eines zustàtzlichen Strings im Heap?

Ciao

Uwe
 

Lesen sie die antworten

#1 Thorsten Doerfler
12/10/2009 - 12:48 | Warnen spam
Uwe Weih schrieb:
Zuerst habe ich es mit einer benutzerdefinierten Konstante bei den
erweiterten Kompileroptionen (SIMULATION=true) gelöst und dann mit
Debug/Release experimentiert, nachdem ich in den Optionen die erweiterte
Buildkonfiguration aktiviert habe und mir Projektmappenkonfiguration im Menü
aktiviert habe.



Eine sehr gute Entscheidung.

Wie es derzeit làuft, also das
bei F5 der Debugger das Programm startet und das Ergebnis unter "\bin\Debug"
landet und bei Erstellung unter "\bin\Release" finde ich Okay. Mit obiger
Einstellung finde ich das nicht so schön getrennt.



Ich würde es eher umgekehrt betrachten. Bei der Default-Einstellung für
VB Projekte ist es nicht schön und transparent getrennt, sondern es wird
im Hintergrund eine völlig willkürliche Auswahl getroffen, die nicht für
jeden sofort ersichtlich ist.

Daher alleine schon lieber volle Kontrole mit Debug + Release +
Plattform. Man könnte so ja auch noch weitere Konfigurationen schaffen,
um speziellen Testbedingungen oder Kundenanforderunge gerecht zu werden.

#If DEBUG Then
Console.WriteLine()
Console.WriteLine("ERRORLEVEL: " + Errorlevel.ToString)
Console.WriteLine("Bitte RETURN drücken")
Console.ReadLine()
#End If

Environment.Exit(Errorlevel)

Ist das so korrekt oder gibt es eine elegantere Möglichkeit?



Eleganter sei dahingestellt:

If System.Diagnostics.Debugger.IsAttached Then
' Debug in IDE oder .NET Debugger aktiv
Else
' Stand-Alone bzw. ohne Debugging gestartet
End If

Da bist Du dann unabhàngig von der Konfigurationseinstellung.

Ach ja, was spricht eigentlich gegen "Console.WriteLine("ERRORLEVEL: " +
Errorlevel.ToString)
" anstatt "Console.WriteLine("ERRORLEVEL: {0}", Errorlevel)"?



Bessere Lesbarkeit bei letzter Variante. Bei einem dynamischen Parameter
hàlt sich das noch in Grenzen, wenn aber mehrere hinzukommen und ein
bestimmtes Ausgabeformat gewünscht ist, ist die Variante mit dem
Formatstring klar im Vorteil. Bei beiden Varianten wird ein neuer String
erzeugt, der Overhead sollte also vernachlàssigbar sein.

Btw. im Sinne der Lesbarkeit, sollte für Stringverkettungen in VB
unbedingt der '&'-Operator dem '+'-Operator vorgezogen werden. So ist
leichter erfassbar, was hier erreicht werden soll.

Thorsten Dörfler
Microsoft MVP Visual Basic

vb-hellfire visual basic faq | vb-hellfire - einfach anders
http://vb-faq.de/ | http://www.vb-hellfire.de/

Ähnliche fragen