在dll中设置两个不同的环境

本文关键字:两个 环境 dll 设置 | 更新日期: 2023-09-27 18:01:12

我已经实现了一个用于消费API的dll。它工作正常,但现在我必须允许用户使用devproduction API(我们有单独的开发和生产环境(。我不知道怎么做。

我可以实现switch,并允许用户设置生产或开发,只需更改路径,但我猜这是一种糟糕的做法。

实际上,我在app.config中存储了一个路径。关于如何实现这一点,或者向用户发送两个dll(一个用于生产,一个用于开发(的唯一方法,有什么建议吗?

在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