在 ASP.NET Core 3.1 网站项目中,我将连接的服务用于旧版 WFC。在 VS 中,我选择添加 -> 连接服务。添加服务时,我将CollectionMappings设置为Generic.List,以便代理创建 List<T> 类型而不是数组。
今天我去更新连接的服务,我通常是先删除它然后重新创建它(没有编辑/更新选项)。然而,事情发生了变化。Add -> Connected Service is gone - 替换为Manage Connected Services。
但是现在在添加服务时 -尽管选择了“Generic.List”,代理会生成数组。这导致我的一千行代码现在用红色下划线。
我在网上搜索了这个问题,找到了 2010 年和几年前的一些参考资料,但我找不到任何解决方案。
生成的类仍然具有 [System.Runtime.Serialization.DataContractAttribute... 所以我认为它没有使用 XmlSerializer - 这显然不符合集合映射设置。
我还注意到Svcutil 版本发生了变化。以前是 2.0.2 现在是 2.0.3
[System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.0.2")]
[System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.0.3-preview3.21351.2")]
我现在能想到的唯一解决方法是手动更新Reference.cs
文件并进行以下查找/替换更改:
System.Threading.Tasks.Task<T[]>
...至:
Task<System.Collections.Generic.List<T>
有人有这方面的经验吗?它似乎是 Svcutil 更新中的一个错误(注意 preview3.21351.2)。如果不再支持集合映射,为什么它们仍然显示在对话框中?