【问题标题】:Determine Solutions Configuration (Visual Studio)确定解决方案配置 (Visual Studio)
【发布时间】:2010-11-06 04:11:50
【问题描述】:

有没有办法在代码中确定您正在运行的“解决方案配置”?例如,“调试”与“发布”?

我有一个服务,我喜欢在 IDE 中的 Debug 中进行测试,现在我设置了 bool,如果设置为 true,则运行“服务”(然后使用 OnStart 方法运行我的“主”)方法),如果它设置为假,我只运行'main'方法。这很好用,但我经常忘记在测试后重置布尔值,然后当我去安装服务时它失败了,我必须回去,重置布尔值,重新编译等。

如果我可以通过编程方式确定我在 IDE 中的 Debug 中运行,那么我可以解决这个问题。

编辑: 在考虑到这一点的同时,我想我最终真正需要的是确定我是否在 ide 中“播放”应用程序,而不是在 soulutions 配置中。这将允许我在调试或其他配置中进行编译。

最简单的解决方案似乎是检查“System.Diagnostics.Debugger.IsAttached”

【问题讨论】:

    标签: c# visual-studio debugging configuration service


    【解决方案1】:

    您不能直接查看解决方案配置,但可以使用一些线索“猜测”您所在的版本。例如,DEBUG 预处理器宏将仅在 C# 的调试解决方案配置中定义。

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

    【讨论】:

    • 在您首次创建项目时 Visual Studio 提供的默认配置下,这是正确的,但如果您选择,也可以在其他构建类型中定义 DEBUG 宏。但是,这只会确定项目的构建,而不是根据原始问题是否与调试器一起运行。
    • @Martin,原来的问题是找项目配置。后来更新说在附加调试器的情况下运行。是的,人们可能是邪恶的,并且让 Debug 没有定义 DEBUG,这就是为什么我说明确将其标记为“猜测”与最终解决方案。
    • 对于 C#,“#end if”应该是“#endif”
    【解决方案2】:

    要确定您是否在 IDE 中进行调试,请查看 Debugger 类,特别是 IsAttached 属性...

    【讨论】:

      【解决方案3】:

      在我的脑海中,您还可以添加一个构建后事件以复制到配置文件中:

      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
      

      ...然后在运行期间访问配置文件。不过,这与代码构建本身无关。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多