我有一個很大的問題,在VS2010 RC中獲取服務引用以使用現有程序集。爲什麼添加服務引用時VS2010 RC不會使用我現有的類型?
儘管我有一個包含所有服務項目和消費項目(這是一個類庫)之間共享的所有數據契約(標有DataContract和具有DataMember的屬性的類)的類庫,但是當我添加一個服務引用時,數據合約將通過服務引用而不是使用現有類型來重新生成。
當我使用VS2010 beta 2時,這工作得很好,並且我有使用相同數據合同的現有服務引用。但是如果我添加一個新的服務引用,或者甚至更新一箇舊的服務引用,它將不再使用現有的類型。
我做了一個迷你測試解決方案,一個服務,一個數據合同類型和一個控制檯應用程序作爲消費者(都在同一個解決方案中),並且它似乎可以工作,但這對於我。有什麼方法可以瞭解爲什麼它不能使用現有的類型?
編輯以清除。 它可以生成與svcutil.exe的代理類,並指向數據契約的dll,像這樣:
svcutil.exe http://localhost/MyService.svc
/reference:[Path To DataContracts]\DataContracts.dll
/n:*,MyProject.MyServiceReference /ct:System.Collections.Generic.List`1
的問題是,莫不是有什麼可能的原因Visual Studio來生成自己的datacontracts即使選中「重用」複選框並引用datacontracts程序集,也不要使用現有的程序。
我可能會補充一點,我可以使用現有的類型,通過手動生成帶有svcutil.exe的服務引用並指向/ reference參數中的數據契約dll。但我仍然不明白爲什麼它不能在Visual Studio中工作! – 2010-02-22 16:53:21
如果它在你的簡單情況下工作,那麼保持它複雜化直到它失敗,或者直到它符合你的實際應用。 – 2010-02-22 19:50:16
我想到了這一點,但我的實際應用程序由14個項目,數百個類和幾十個服務引用組成,約有30個數據合同類。因此,「直到它符合你的實際應用」將需要一段時間。我希望別人有這個問題,或者至少知道爲什麼重用類型會失敗的原因。 – 2010-02-22 20:06:46