加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 08:42:35 所属栏目:百科 来源:网络整理
导读:我有一个接口,我们称之为ILocateLogFile,带有dev / beta / production服务器的标准实现,以及只能在本地开发环境中工作的接口.如果我在本地或在服务器上运行,我似乎无法想出一个很好的干净方式来决定(最好是在编译时,但运行时会没问题).如果这很重要,这是在II
我有一个接口,我们称之为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.我个人认为这不是那么优雅,但它也可以起作用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读