在dll中设置两个不同的环境
本文关键字:两个 环境 dll 设置 | 更新日期: 2023-09-27 18:01:12
我已经实现了一个用于消费API的dll
。它工作正常,但现在我必须允许用户使用dev
和production
API(我们有单独的开发和生产环境(。我不知道怎么做。
我可以实现switch
,并允许用户设置生产或开发,只需更改路径,但我猜这是一种糟糕的做法。
实际上,我在app.config
中存储了一个路径。关于如何实现这一点,或者向用户发送两个dll
(一个用于生产,一个用于开发(的唯一方法,有什么建议吗?
正确的方法是:
- 将路径存储在app.config中
- 为配置文件创建特定于环境的转换
- 在部署期间转换配置文件
示例配置:
<add key="apiUrl" value="http://localhost/myapi" />
以及相应的转换文件
<add key="apiUrl" value="http://devhost/myapi" xdt:Transform="Replace" xdt:Locator="Match(key)" />
你可以使用SlowCheetah这样的插件来进行转换。
或者,您也可以使用MSBuild任务来执行转换:
<UsingTask TaskName="TransformXml"
AssemblyFile="$(MSBuildExtensionsPath)'Microsoft'VisualStudio'v10.0'Web'Microsoft.Web.Publishing.Tasks.dll"/>
<Target Name="TransformWebConfig">
<TransformXml Source="C:'myapp'app.config"
Transform="C:'myapp'app.dev.config"
Destination="C:'myapp'bin'<web.config or in case of exe, product.exe.config>"
StackTrace="true" />
</Target>
注意:.Net中的DLL文件不能有配置文件。所以我假设你指的是你的产品的exe或web.config。
条件编译可能是一种选择。
设置起来并不难。一篇好文章是:
http://www.codeproject.com/Articles/451734/Visual-Studio-Use-Conditional-Compilation-to-Contr