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

时间:2015-07-06 17:24:51

标签: c# .net dll

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

我可以实现switch并允许用户设置生产或开发并只改变路径,但我猜这是不好的做法。

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

2 个答案:

答案 0 :(得分:1)

执行此操作的正确方法是:

  • 将路径存储在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 tasks进行转换:

<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。

答案 1 :(得分:0)

条件编译可以是一个选项。

设置起来并不难。一篇好文章是:

http://www.codeproject.com/Articles/451734/Visual-Studio-Use-Conditional-Compilation-to-Contr