【问题标题】:Update Service Reference Address based on Configuration?根据配置更新服务参考地址?
【发布时间】:2011-09-01 20:13:07
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    没有办法对配置进行条件编译。我在一些项目中使用的一件事是在代码中使用 #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 执行任意命令,因此您可以根据构建配置使用自定义目标,并运行一些命令来更新您的配置文件。

    【讨论】:

    • 嗯...我想如果我执行条件 IF 语句来选择位置,只要我保持消息相同并且不更改调试和发布之间的内容,这并不重要。
    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-13
    • 2017-12-17
    • 2010-12-24
    • 2011-11-11
    相关资源
    最近更新 更多