WCF サービスがあり、オプションを介して VS.NET 2012 を使用してそのサービスへの参照を追加するときにAdd Service Reference...
、ダイアログの下部で名前空間を指定します (つまり、「MyNameSpace」)。
Reference.cs
これにより、自動生成されたクラスに次の最初の数行のコードが生成されます。
namespace MyProject.MyNameSpace {
using System.Runtime.Serialization;
using System;
//Lots of auto generated proxy class code...
}
問題は、svcutil.exe
ユーティリティを使用してプロキシ クラスを手動で生成すると、その名前空間を取得できず、ビルド時に次のような大量のエラーが発生することです。
型名または名前空間名 'MyNameSpace' が名前空間 'MyProject' に存在しません (アセンブリ参照がありませんか?)
だから私は次の(2)のことを試しましたが、どちらもうまくいきませんでした:
- ユーティリティから生成されたクラス
namespace MyProject.MyNameSpace {}
の周りに単純な宣言を手動で追加します。Reference.cs
svcutil.exe
/n
次のように「名前空間」スイッチを使用svcutil.exe
します。/n:http://schemas.datacontract.org/2004/07/MyNameSpace,MyNameSpace
これは機能せず、次のようになりました。System.Data の使用;
[アセンブリ: System.Runtime.Serialization.ContractNamespaceAttribute(" http://schemas.datacontract.org/2004/07/MyNameSpace ", ClrNamespace="MyNameSpace")]
OK、それも機能せず、ある種の名前空間宣言属性を追加しましたが、namespace
以前のようにラッパーは追加しませんでした。
svcutil.exe
を使用してプロキシ クラスを生成するときに、生成されたクラスに同じものnamespace
が追加されるようにするにはどうすればよいですか?
編集:次の名前空間スイッチを使用して、目的の名前空間を取得しましたが、メソッドで宣言が重複しているため、別の問題が発生しています:
名前空間:/n:*,MyProject.MyNameSpace
現在のプロキシの問題の例:public bool MyMethod(MyProject.MyNameSpace.MyProject.MyNameSpace.MyRecord record)
名前空間の繰り返しに注目してください。それは問題だ。