在调试期间,我添加了一堆指向调试机器上服务的服务引用。有没有办法根据配置自动重新生成服务引用?当我准备好发布时,我真的宁愿不必将它们全部指向发布服务器,然后当我需要调试时返回并再次更改它们等等。
基本上,我想要以下(自动完成):
在调试期间,我添加了一堆指向调试机器上服务的服务引用。有没有办法根据配置自动重新生成服务引用?当我准备好发布时,我真的宁愿不必将它们全部指向发布服务器,然后当我需要调试时返回并再次更改它们等等。
基本上,我想要以下(自动完成):
没有办法对配置进行条件编译。我在一些项目中使用过的一件事是在代码中使用 #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 执行任意命令,因此您可以根据构建配置使用自定义目标,并运行一些命令来更新您的配置文件。
您可以使用web.config 转换来解决此问题而无需代码。
http://blogs.msdn.com/b/webdevtools/archive/2009/05/04/web-deployment-web-config-transformation.aspx