12

WCFライブラリプロジェクトとそのWebサービスを使用する別のプロジェクトを含むVS2010ソリューションがあります。VS 2012でオープンした後、アップグレードされました。

CollectionMappingsがGeneric.Listに明確に設定されている場合でも、プロキシはList<T>タイプを配列として返すようになりました。

何が起こっているのでしょうか?

他の誰かがここで同様の問題を抱えていますが、彼は代わりにVS2012からVS2010にダウングレードしていました。

編集:私は再確認しました、そしてReference.svcmapは以下を含みます:

<CollectionMappings>
  <CollectionMapping TypeName="System.Collections.Generic.List`1" Category="List" />
</CollectionMappings>

ただし、Reference.csには次のようなものが含まれています。

 public xxx.ServiceReference1.ADUser[] get_ADUsers;

Webサービスでは、次のようになります。

 public List<ADUser> get_ADUsers(string wildcard, string sortexp, string sortorder)

詳細(2012年12月12日追加):

VS2010で作成されたソリューションは、別のPCで正常に機能していました。そのPCからTFSにチェックインされました。この問題のあるPCで、マッピングとGETを実行しました。ビルドしようとすると、サービス参照で使用されているすべてのList<T>タイプがすべて何らかの形で配列として扱われるというエラーが発生しました。問題のあるPCにVS2010をインストールし、そのソリューションも入手しました。そして、同じエラーもあります。したがって、VS2012とは関係がないようです。

すべてのPCはWindows7Professionalです。

詳細(2012年12月19日追加):

プロジェクトが開かれると、ローカルPCのServiceReferences / ServiceReference1/Reference.csが自動的に変更されました。変化は大きかった。以下はその一部です。

ここに画像の説明を入力してください

2つの方法が示されています。List <string> get_Hotlines()はstring [] get_Hotlines()になり、List <string> get_HotlinesBySite()はstring [] get_HotlinesBySite()になります。

質問しなくてもファイルが変更されるのはなぜですか?VS 2012のアップグレードログには、2つのファイルが変更されたと記載されていますが、Reference.csはそのうちの1つではありませんでした。

4

3 に答える 3

4

wcf サービスへの参照を追加するときは、Collection Type を Generic List に変更する必要があります。

ここに画像の説明を入力

この設定を更新することもできます。ソリューション内のサービス参照を選択し、マウスを右クリックして [サービス参照の構成...] を選択します。

于 2012-12-19T18:58:26.820 に答える