SvcUtils.exe の奇妙な動作を確認しました。
そこに /reference パラメータを渡すと、何らかの理由で *.cs ファイルが生成されません。
C:\test>"C:\Program Files\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\SvcUtil.exe" /t:code http://localhost/Api/Common.svc /r:Api.dll
Microsoft (R) Service Model Metadata Tool
[Microsoft (R) Windows (R) Communication Foundation, Version 4.0.30319.17929]
Copyright (c) Microsoft Corporation. All rights reserved.
Attempting to download metadata from 'http://localhost/Api/Common.svc' using WS-Metadata Exchange or DISCO.
Generating files...
C:\test\output.config
同時に、パラメーターを削除すると、正常に生成されます。
C:\test>"C:\Program Files\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\SvcUtil.exe" /t:code http://localhost/Api/Common.svc
Microsoft (R) Service Model Metadata Tool
[Microsoft (R) Windows (R) Communication Foundation, Version 4.0.30319.17929]
Copyright (c) Microsoft Corporation. All rights reserved.
Attempting to download metadata from 'http://localhost/Api/Common.svc' using WS-Metadata Exchange or DISCO.
Generating files...
C:\test\CommonService.cs
C:\test\output.config
なんで?Api.svc で使用される Api.dll からクラスを取得して、CommonService.cs で生成するにはどうすればよいですか?
アップデート。私には明らかであるが、それでもなお重要であると思われるいくつかの詳細を追加させてください。Api.dll アセンブリには、[DataContract]属性でマークされたクラスと、 [DataMember]属性でマークされたプロパティが含まれています。これらのクラスは、Api.svc で表示されるメソッドから返されます。私の目標は、生成されたプロキシ コードで Api.dll のクラスを再利用することです。
この動作がおかしいと思うのはなぜですか? 通常は再利用せずにサービスのプロキシ クラスを生成しますが、/r パラメータを追加してクラスを再利用すると、コードの生成がまったく拒否されます。問題は、何が間違っているのかということです。この動作を得るために何が間違っている可能性があり、目標を達成するためにそれを正しく行うにはどうすればよいでしょうか?
UPD2. 最も奇妙なのは、チェックされた「再利用」オプションを使用してVisual Studioから参照を更新すると、完全に機能することです。