使用Debugger.IsAttached确定环境是否正确?

时间:2017-02-02 19:16:21

标签: c# development-environment production-environment

我只有两种环境:开发生产。使用下一个代码知道应用程序是在一个还是另一个中运行是不是一个好主意?

bool IsProduction()
{
   return !Debugger.IsAttached;
}

我看过thisthis,但在我看来,讨论采取了不同的方式。

使用appSettings键怎么样?

<appSettings>
    <add key="Environment" value="Dev"/>
</appSettings>

如果有人编辑配置文件会怎么样?该代码应该具有“复核”机制吗?值是加密还是太多?

谢谢你的时间!

2 个答案:

答案 0 :(得分:2)

Debugger.IsAttached只有在进程独立于构建时附加调试器(在VS下运行或附加了外部调试器)时才会返回true。

如果要根据构建类型区分环境,可以使用预处理器指令设置布尔值,如下所示:

#if DEBUG
bool isDebug = true;
#else
bool isDebug = false;
#endif

答案 1 :(得分:0)

使用Debugger.IsAttached的第一个方法即使在开发中也不会起作用,除非您实际上已将调试器附加到该进程。

配置值是一种正确的方法,从灵活性的角度来看,这可能是我所知道的最好的方法。您可以配置不同的环境,并使用转换配置文件,这将在部署期间自动更新。

如果您想了解有关配置转换方法的更多信息,我可以为您提供一些链接