c# – 如何判断代码是否从Visual Studio / Cassini本地运行

前端之家收集整理的这篇文章主要介绍了c# – 如何判断代码是否从Visual Studio / Cassini本地运行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个接口,我们称之为ILocateLogFile,带有dev / beta / production服务器的标准实现,以及只能在本地开发环境中工作的接口.如果我在本地或在服务器上运行,我似乎无法想出一个很好的干净方式来决定(最好是在编译时,但运行时会没问题).如果这很重要,这是在IIS上托管的WCF应用程序.

我提出的最好的是使用编译器符号,如:

ILocateLogFile locateLogFile;
#if DEBUG
    locateLogFile = new DevSandBoxLogFileLocator();
#else
    locateLogFile = new LogFileLocator();
#endif

问题是,编译符号由构建设置,我无法控制,我想确定.是否有一些自动方法来检查Visual Studio的存在?或者至少检查一下卡西尼而不是IIS?

解决方法

我这样做的两种方法1你可以检查进程名称
bool isRunningInIisExpress = Process.GetCurrentProcess()
                                .ProcessName.ToLower().Contains("iisexpress");

或者使用自定义设置更新配置文件

<appSettings>
    <add key="ApplicationEnvironment" value="LOCAL_DEV" />
</appSettings>

您为每个环境专门更新并为您提供应用程序查询

我不确定是否有一种方法可以在编译时确定这一点,除了为每个环境提供特殊的构建配置并为每个构建放置一个自定义PRAGMA.我个人认为这不是那么优雅,但它也可以起作用.

猜你在找的C#相关文章