我有一个接口,我们称之为它ILocateLogFile
,它具有用于开发/测试/生产服务器的标准实现,并且仅适用于本地开发环境。我似乎想不出一种干净的方式来决定(最好在编译时,但运行时会很好)我是在本地运行还是在服务器上运行。这是托管在 IIS 上的 WCF 应用程序,如果这很重要的话。
我想出的最好的方法是使用编译器符号,例如:
ILocateLogFile locateLogFile;
#if DEBUG
locateLogFile = new DevSandboxLogFileLocator();
#else
locateLogFile = new LogFileLocator();
#endif
问题是,编译符号由构建设置,我无法控制,我想确定。没有一些自动的方法来检查 Visual Studio 的存在吗?或者至少检查 Cassini 而不是 IIS?