5

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)のことを試しましたが、どちらもうまくいきませんでした:

  1. ユーティリティから生成されたクラスnamespace MyProject.MyNameSpace {}の周りに単純な宣言を手動で追加します。Reference.cssvcutil.exe
  2. /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)

名前空間の繰り返しに注目してください。それは問題だ。

4

0 に答える 0