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つではありませんでした。