服务引用 - 为啥在引用的程序集中重用类型
Posted
技术标签:
【中文标题】服务引用 - 为啥在引用的程序集中重用类型【英文标题】:Service reference - why reuse types in referenced assemblies服务引用 - 为什么在引用的程序集中重用类型 【发布时间】:2017-03-03 13:24:18 【问题描述】:我按照说明向我的项目添加服务引用,默认情况下,“在引用的程序集中重用类型”被勾选。
如果我保持勾选状态,我会在 Label 等控件上收到模棱两可的警告,我现在必须完整声明。
如果我取消勾选,警告就会消失。
我的问题是:
为什么要重用类型?
这到底是什么意思?
不使用会有什么问题?
【问题讨论】:
【参考方案1】:我知道我的回答晚了两年,但是......
为什么要重用类型?
为了避免两个类具有相同的名称、类型等。
这到底是什么意思?
这意味着,如果您同时控制服务器代码和客户端代码,并在单独的程序集中定义数据合同类(并在客户端代码中添加对它的引用),svcutil 将不会生成新类但会重用您已定义的用于服务器的类。
不使用会有什么问题?
如果您 1) 不控制服务器代码或 2) 为所有内容指定完整的命名空间,则通常没有。如果您使用相同的服务器和客户端代码解决方案,您可能会收到模棱两可的警告。
【讨论】:
以上是关于服务引用 - 为啥在引用的程序集中重用类型的主要内容,如果未能解决你的问题,请参考以下文章
帮助 System.Web.Compilation.BuildManager 在非引用程序集中查找类型
EF生成 类型“System.Data.Entity.DbContext”在未被引用的程序集中定义
类型“System.Data.Objects.DataClasses.EntityObject”在未被引用的程序集中定义。
类型“System.Data.Linq.DataContext”在未被引用的程序集中定义。必须添加对程序集“System.Data.Linq, Version=4.0.0.0, Culture=neu