我有一个遗留项目,它有几个Web引用,我想根据环境(本地,开发,登台,生产)配置不同的端点。
我已阅读此article,但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>
我已经阅读了有关使用machine.config
进行配置的内容,但由于同一台计算机中存在不同的环境,因此在我的情况下不起作用。在运行时更改Url属性不是最佳解决方案,因为我需要更改Web引用的所有用法。
理想情况下我想使用appSettings
所以我可以使用local.config来覆盖端点的值,但如果有一种简单的方法可以覆盖applicationSettings
的值也很好
修改
这是一个dll项目。不知道这是否会以某种方式影响。
答案 0 :(得分:0)
您可以将外部配置文件包含到applicationSettings部分,从而允许您针对不同的环境调整配置:
<applicationSettings>
<foo.Properties.Settings configSource="ConfigFolder\local.config">
</foo.Properties.Settings>
</applicationSettings>
local.config:
<applicationSettings>
<foo.Properties.Settings configSource="local.config">
<setting name="foo_Api" serializeAs="String">
<value>http://myserver/server/Api.asmx</value>
</setting>
</foo.Properties.Settings>
</applicationSettings
答案 1 :(得分:0)
如果它可以帮助任何人:最后经过一些研究后我找到的最佳解决方案是为每个环境添加一个Visual Studio配置文件和Web.config
转换。然后,我只需添加Web.config
本地Web引用端点和每个Web.{environment}.config
中用于替换端点值的转换。
更多信息here