我在VS2010與3個項目的解決方案:如何在VS2010中爲主機和客戶端項目維護WCF服務庫?
- WCFServiceLib - 與WCF服務庫模板創建一個項目。
- ServiceHostConsole - 使用控制檯應用程序模板創建的項目。
- ServiceClientConsole - 使用控制檯應用程序模板創建的項目。
VS模板在WCFServiceLib中創建了一個app.config,其中包含我想要公開的服務的所有設置。
ServiceHostConsole具有WCFServiceLib作爲參考並承載服務,但沒有它自己的app.config文件。
如果我嘗試運行沒有app.config的主機項目,它無法託管服務,所以我將app.config從WCFServiceLib移到了ServiceHostConsole。
ServiceClientConsole具有對WCFServiceLib中的服務的服務引用。但是,一旦我將app.config從Lib項目移動到Host項目,我就不能再更新服務引用或添加添加到lib項目中的新服務。
爲了讓客戶端項目查看服務引用,我必須將app.config移回到lib項目中,對客戶端上的服務引用執行更新/添加,然後將app.config移回到主機項目。
請注意,我不能在Service Lib項目和主機項目中保留重複的app.config文件,因爲這會導致主機無法啓動。無論如何,這將是一個糟糕的解決方案,因爲它會在不同的地方創建重複的配置。只改變其中一個可能會產生難以追蹤的問題。
這似乎很奇怪,這app.config文件左右移動需要發生,使主機和客戶端都工作,並且他們不能同時工作。
我相信這肯定是我設置方式的一個問題(儘管我使用默認模板設置了它們),我想一定有更好的方法來解決這個問題。
這個問題就變得時你都在積極開發服務,並需要不斷用更新的服務運行主機和測試客戶端,這個問題看標題很討厭:
你如何保持一個WCF服務VS2010中的庫適用於主機和客戶端項目?
運行主機應用程序,然後添加服務引用完美無缺!我想我沒有真正理解,當我直接向它添加服務引用時,存在庫的自動託管過程。感謝您的解釋。 – 2011-06-16 21:12:36
「您必須在不調試的情況下運行該服務」。這是一個很大的幫助。在解決方案屬性下,只需將主機設置爲唯一要啓動的項目,然後按ctrl + f5即可。這將在未經調試的情況下啓動主機,並允許您在同一項目中更改客戶端 - 允許您添加服務參考。 – Trevor 2013-02-06 09:06:36