我有一个遗留项目,它有几个 Web 引用,我想根据环境(本地、开发、登台、生产)配置不同的端点。
我已经阅读了这篇文章,但是 VS 使用的是Settings.settings
和 applicationSettings 而不是appSettings
,所以不是使用
this.Url = System.Configuration.ConfigurationSettings.AppSettings["foo_Api"]
正在使用this.Url = global::foo.Properties.Settings.Default.foo_Api;
我的 app.config 如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="foo.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<applicationSettings>
<foo.Properties.Settings>
<setting name="foo_Api" serializeAs="String">
<value>http://myserver/server/Api.asmx</value>
</setting>
</foo.Properties.Settings>
</applicationSettings>
</configuration>
我已阅读有关配置 with 的信息machine.config
,但在我的情况下这不起作用,因为同一台机器上有不同的环境。在运行时更改 Url 属性也不是最好的解决方案,因为我需要更改 Web 引用的所有用法。
理想情况下,我想使用appSettings
这样我可以放置一个 local.config 来覆盖端点的值,但是如果有一种简单的方法来覆盖端点的值applicationSettings
也可以。
编辑
这是一个dll项目。不知道这是否会以某种方式影响。