gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 21:34:27 24 4
gpt4 key购买 nike

我有一个接口(interface),我们称它为 ILocateLogFile,它具有针对开发/测试版/生产服务器的标准实现,并且只能在本地开发环境中运行。如果我是在本地运行还是在服务器上运行,我似乎想不出一个干净利落的方式来决定(最好是在编译时,但运行时也可以)。这是托管在 IIS 上的 WCF 应用程序(如果重要的话)。

我想出的最好办法是使用编译器符号,例如:

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

问题是,编译符号由build设置,这是我无法控制的,我想确定。是否有一些自动检查 Visual Studio 是否存在的方法?或者至少检查 Cassini 而不是 IIS?

最佳答案

我有两种方法 1 你可以检查进程名称

bool isRunningInIisExpress = Process.GetCurrentProcess()
.ProcessName.ToLower().Contains("iisexpress");

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

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

你专门为每个环境更新,并让你的应用程序查询

我不确定是否有办法在编译时确定这一点,除了针对每个环境的特殊构建配置并为每个构建放置自定义 PRAGMA 之外。我个人认为这不是那么优雅,但它也可以工作。

关于c# - 如何判断代码是否在本地从 Visual Studio/Cassini 运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16798340/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com