2009-06-26 179 views
1

有沒有在代碼中確定您所運行的「解決方案配置」的方法?例如,「調試」與「發佈?確定解決方案配置(Visual Studio)

我有一個服務,我喜歡在IDE中的Debug中測試,現在我有布爾,我設置如果設置爲true運行'服務'(然後使用OnStart方法來運行我的'main '方法),如果它設置爲false,我只是運行'main'方法。這很好,但我經常忘記重置布爾測試後,然後當我去安裝服務,它失敗了,我必須回去,重置布爾,重新編譯等。

如果我可以只是通過編程確定,我在Debug中運行在IDE中,然後我可以解決這個問題。

編輯: 雖然通過這種思考,我想我真正需要的到底是確定,如果我在IDE中的「打」的應用程序,而不是soulutions配置很。這將允許我以調試或其他配置進行編譯。

的simpliest解決方案似乎檢查「System.Diagnostics.Debugger.IsAttached」

回答

2

要確定是否列在IDE的調試運行,看Debugger類,特別是IsAttached財產...

14

你不能直視的解決方案配置,但你可以使用一些線索,以「猜測」你是什麼版本。例如,DEBUG預處理宏只能在C#的Debug解決方案配置中定義。

bool InDebugConfiguration() { 
#if DEBUG 
    return true; 
#else 
    return false; 
#endif 
} 
+0

+1:以秒爲單位被擊敗 – 2009-06-26 14:38:18

0

關閉我的頭頂,你還可以添加一個後建立事件拷貝到配置文件中:

if $(ConfigurationName)==Debug goto DEBUG_POSTBUILD 
goto RELEASE_POSTBUILD 


REM -----------DEBUG-----------  
:DEBUG_POSTBUILD 
echo POSTBUILD-Debug Config Copy 
copy "$(ProjectDir)\config_debug.cfg" "$(TargetDir)\config.cfg" /y 
if errorlevel 1 goto FAILED 

...然後在運行期間訪問配置文件。儘管如此,它並不依賴於代碼構建。