Обновить адрес справочной службы на основе конфигурации? - PullRequest
3 голосов
/ 25 мая 2011

Во время отладки я добавил несколько ссылок на сервисы, указывающие на сервисы на машине отладки. Есть ли способ автоматически восстановить сервисные ссылки на основе конфигурации? Я действительно предпочел бы не проходить и указывать их все на сервере Release, когда я буду готов к выпуску, затем, когда мне нужно отладить, вернитесь и измените их все снова и т. Д.

В основном, я хочу следующее (сделано автоматически):

Ответы [ 2 ]

3 голосов
/ 25 мая 2011

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

Вы можете использовать преобразования web.config , чтобы решить эту проблему без кода.

http://blogs.msdn.com/b/webdevtools/archive/2009/05/04/web-deployment-web-config-transformation.aspx

...