为不同的环境配置Web引用VS 2010

时间:2013-01-29 11:43:28

标签: c# asp.net .net .net-4.0 configuration

我有一个遗留项目,它有几个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项目。不知道这是否会以某种方式影响。

2 个答案:

答案 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