C# 解决方案赢得';不要构建,因为它可以';t从服务生成类型转换为我的类型

C# 解决方案赢得';不要构建,因为它可以';t从服务生成类型转换为我的类型,c#,web-services,wcf,C#,Web Services,Wcf,我有一个WCF服务项目,它构建良好,生成可访问的WSDL,并且svcutil.exe不会生成任何错误 我有一个访问该web服务的“服务管理器”项目,我已经成功地向其中添加了一个服务引用ABCService 第三个项目保存了我需要来回传递的所有POCO对象——用[DataContract]和[DataMember]属性进行了大量修饰 当我尝试构建解决方案时,我看到ABCService的Reference.cs有如下方法(为了简洁起见,我用(…)代替了完整的名称空间): 第一个方法返回一个东西,效果

我有一个WCF服务项目,它构建良好,生成可访问的WSDL,并且svcutil.exe不会生成任何错误

我有一个访问该web服务的“服务管理器”项目,我已经成功地向其中添加了一个服务引用ABCService

第三个项目保存了我需要来回传递的所有POCO对象——用[DataContract]和[DataMember]属性进行了大量修饰

当我尝试构建解决方案时,我看到ABCService的Reference.cs有如下方法(为了简洁起见,我用(…)代替了完整的名称空间):

第一个方法返回一个东西,效果很好,但每个MyCollection方法都有一个错误:

错误16参数1:无法从“(…).MyCollection”转换为“(…).myCollectionOfThing0mj5ZrAW”

我的收藏课装饰得和你想象的一样:

[CollectionDataContract]
public class MyCollection<T> : List<T> where T : BaseType
{
  //  ...
}
要装饰我的收藏类,我会收到相同的错误,但名称已更新:

错误12参数1:无法从“(…).myCollection”转换 到“(…).myCollectionThing”

编辑2:

尽管已选中“引用程序集中的重用类型”,但仍选择了“指定引用程序集”的单选按钮,并选中了我的POCO程序集旁边的框:

…仍在使用唯一的类名生成服务引用:


正如@vesan和@RitchMelton在评论中所建议的那样,类型似乎是在客户端重新生成的,您应该重用
数据契约

如果要添加服务引用,请通过在所有引用程序集中选择单选“重用类型”,重用引用程序集中的类型:

还要注意,您可能需要将集合类型更改为
System.collection.Generic.List
,以防止将列表更改为数组/

如果使用svcuti生成代理,则需要使用
/reference:
在生成引用时重用
DataContract
程序集,如:

svcutil /reference:YourDLL.dll http://localhost/YourService?wsdl
有关使用
SvcUtil
/reference
的更多详细信息,请参阅:


运行svcuti时,是否使用了
/reference
参数将其指向数据协定类中的DLL?听起来工具正在生成类型。您是否已选中“所有引用程序集中的重用类型”?@RitchMelton我肯定已选中“重用类型”,并且我已选择程序集。。。虽然我在导入我的程序集的第二个版本时遇到了问题,但如何确保它引用了正确的版本?版本可能有问题吗?@vesan我不这么认为-我明天会尝试。您是否从
bin
debug
文件夹添加引用?请参阅编辑2-尽管按照您的描述进行了配置,服务引用仍在生成唯一的类。
[CollectionDataContract(Name= "myCollection{0}", ItemName = "{0}")]
svcutil /reference:YourDLL.dll http://localhost/YourService?wsdl