根据配置更新服务参考地址?

时间:2011-05-25 14:38:16

标签: wcf configuration compilation conditional-compilation service-reference

在调试期间,我添加了一堆指向Debug机器上的服务的服务引用。有没有办法根据配置自动重新生成服务引用?当我准备好发布时,我真的不必经历并将它们全部指向Release服务器,然后当我需要调试时再返回并再次更改它们等等。

基本上,我想要以下(自动完成):

2 个答案:

答案 0 :(得分:3)

无法对配置进行条件编译。我在一些项目中使用的一件事是在代码中使用#if语句来更新配置中的服务引用。类似于下面代码的东西:

static void Main() {
    TestClient client = new TestClient();
    UpdateAddress(client.Endpoint);
}
static void UpdateAddress(ServiceEndpoint endpoint) {
    string address = endpoint.Address.Uri.ToString();
    int svcIndex = address.IndexOf(".svc");
    int serviceIndex = address.LastIndexOf("/", svcIndex);
    address = address.Substring(serviceIndex);
#if DEBUG
    address = "http://localhost/App" + address;
#else
    address = "http://myserver" + address;
#endif
    endpoint.Address = new EndpointAddress(address);
}

我还没有做过的另一件事,但我认为可能是,看看msbuild目标。 IIRC您可以从msbuild执行任意命令,因此您可以根据构建配置使用自定义目标,并运行一些命令,根据该命令更新配置文件。

答案 1 :(得分:1)