Нет способа сделать условную компиляцию для конфигурации.Одна вещь, которую я использовал в некоторых проектах, состояла в том, чтобы в коде были операторы #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, так что вы можете использовать настраиваемую цель в зависимости от конфигурации сборки и запустить некоторую команду, которая обновит ваш конфигурационный файл на основе этого.