Determine Solutions Configuration (Visual Studio)

2019-07-25 18:08发布

Is there a way, in code, to determine what "Solutions Configuration" you are running in? For example, 'Debug' vs. 'Release?

I have a service that I like to test in the IDE in Debug, right now I have bool that I set which either runs the 'service' if set to true (which then uses the OnStart method to run my 'main' method), if it's set to false I just run the 'main' method. This works great but I often forget to reset the bool after testing and then when I go to install the service it fails and I have to go back, reset the bool, recompile etc.

If I could just determine programatically that I was running in the IDE in Debug then I could get around this issue.

Edit: While thinking this through, I guess what I really need in the end is to determine if I'm in the 'playing' the app in the ide and not the soulutions configuration. This would allow me to compile in either debug or other configuration.

The simpliest solution seems to check 'System.Diagnostics.Debugger.IsAttached'

3条回答
Luminary・发光体
2楼-- · 2019-07-25 18:33

You can't directly look at the solution configuration, but you can use a few clues to "guess" what version you are in. For instance, the DEBUG preprocessor macro will only be defined in the Debug solution configuration for C#.

bool InDebugConfiguration() {
#if DEBUG
  return true;
#else
  return false;
#endif 
}
查看更多
ゆ 、 Hurt°
3楼-- · 2019-07-25 18:38

Off the top of my head, you could also add a post-build event to copy in a config file:

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

...then access the config file during the run. This isn't tied to the code build itself though.

查看更多
疯言疯语
4楼-- · 2019-07-25 18:54

To determine whether you are running under debug in the IDE, look at the Debugger class, specifically the IsAttached property...

查看更多
登录 后发表回答