【发布时间】:2012-11-10 20:54:06
【问题描述】:
我有一个 VS 2010 解决方案,其中包含一个 WCF 库项目和另一个使用该 Web 服务的项目。 VS 2012开启后,升级了。
代理现在将 List
会发生什么?
其他人也有类似的问题here,但他正在从 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
所有电脑都是 Windows 7 专业版。
更多信息(2012 年 12 月 19 日添加):
项目打开时,本地PC上的ServiceReferences/ServiceReference1/Reference.cs被自动修改。变化是巨大的。以下是其中的一小部分:
显示了两种方法。 List
为什么即使没有我的询问,文件也会被更改? VS 2012 升级日志说有两个文件被更改,但 Reference.cs 不是其中之一。
【问题讨论】:
-
我无法重现您的问题。您是否尝试使用适当的集合映射重新生成代理?
-
是的,我已经多次重新生成代理。我什至通过向同一个服务添加另一个具有不同名称 (ServiceReference2) 的服务来复制它。问题是一样的。在高级下,集合类型设置为 System.Collections.Generic.List。旁边的另一台 PC 具有完全相同的设置,但可以正常工作。
-
你确定它还在使用DataContractSerializer吗? (例如,生成的类是否具有 [DataContract] 属性?)也许它出于某种原因切换到 XmlSerializer,这不符合集合映射设置。
-
要清楚,您右键单击您的客户端项目并选择“添加服务引用”,并在高级选项中将集合类型设置为 System.Collections.Generic.List,对吗?您是否尝试过使用 svcutil.exe 生成代理?此外,“您旁边的 PC”是否为您所在的同一个 WCF 项目添加了相同的引用?配置一样吗?
-
所以我知道这是一个老问题,但这也是我遇到的问题。似乎当 svcutil.exe 遇到不知道如何序列化的东西时,所有的赌注都关闭了。 stackoverflow.com/questions/16657982/…
标签: wcf tfs visual-studio-2012 wcf-client