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