2009-06-26 184 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 

...然后在运行期间访问配置文件。尽管如此,它并不依赖于代码构建。