3

在调试过程中,我在调试机器上添加了一堆指向服务的服务引用。有什么方法可以根据配置自动重新生成服务引用?当我准备发布时,我真的宁愿不必经过并将它们全部指向发布服务器,然后当我需要调试时再返回并再次更改它们等。根据配置更新服务参考地址?

Basicaly,I want以下(自动完成):

回答

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执行任意命令,所以你可以使用一个自定义的目标取决于构建配置,并运行一些命令,它会更新你的配置文件。

+0

嗯......我想,如果我这样做的条件IF语句来选择的位置也没什么关系,只要我保持的消息相同,不改变调试和发布之间的事情。 – michael 2011-05-25 19:12:35