我有一个 VS 2010 解决方案,其中包含一个 WCF 库项目和另一个使用该 Web 服务的项目。在 VS 2012 中打开后,进行了升级。
代理现在将 List<T> 类型作为数组返回,即使 CollectionMappings 明确设置为 Generic.List。
会发生什么?
其他人在这里也有类似的问题,但他是从 VS 2012 降级到 VS 2010。
编辑:我仔细检查了,Reference.svcmap 包含:
<CollectionMappings>
<CollectionMapping TypeName="System.Collections.Generic.List`1" Category="List" />
</CollectionMappings>
但 Reference.cs 包含以下内容:
public xxx.ServiceReference1.ADUser[] get_ADUsers;
在网络服务中是:
public List<ADUser> get_ADUsers(string wildcard, string sortexp, string sortorder)
更多信息(2012 年 12 月 12 日添加):
在 VS2010 中创建的解决方案在另一台 PC 上运行良好。它已从该 PC 检入 TFS。在这台有问题的 PC 上,我们进行了映射和 GET。当我们尝试构建时,我们遇到了错误,服务引用中使用的所有 List<T> 类型都以某种方式被视为数组。我们在有问题的 PC 上安装了 VS 2010 并获得了该解决方案。同样的错误也存在。因此,它似乎与 VS 2012 无关。
所有 PC 都是 Windows 7 专业版。
更多信息(2012 年 12 月 19 日添加):
工程打开时,本地PC上的ServiceReferences/ServiceReference1/Reference.cs被自动修改。变化是巨大的。下面是其中的一小部分:
显示了两种方法。List<string> get_Hotlines() 变为 string[] get_Hotlines() 并且 List<string> get_HotlinesBySite() 变为 string[] get_HotlinesBySite()。
为什么即使没有我的要求,文件也会更改?VS 2012 升级日志说两个文件已更改,但 Reference.cs 不是其中之一。