WCF执行Update Service Reference后Reference.cs多出命名空间前缀怎么解决
修复WCF更新服务引用后自动拼接项目根命名空间前缀问题
方案1:通过服务引用配置窗口修改(无需手动改配置文件)
- 右键项目内对应的服务引用,选择配置服务引用
- 在弹出窗口的「命名空间」区域,找到「将指定的服务命名空间映射到CLR命名空间」的表格
- 找到服务契约对应的目标命名空间条目,将右侧的CLR命名空间值修改为你期望的
ReferenceName(替换成你实际的服务引用名),不要保留前面的项目根命名空间前缀 - 点击「确定」后,工具会自动重新生成Reference.cs,生成的方法引用路径就会符合预期
方案2:修改svcmap配置永久固化规则
- 点击解决方案资源管理器顶部的「显示所有文件」按钮,展开对应服务引用的嵌套文件
- 打开
Reference.svcmap文件,找到<NamespaceMappings />节点,修改为如下格式:
<NamespaceMappings> <NamespaceMapping TargetNamespace="http://你的服务契约自定义命名空间地址" ClrNamespace="ServiceReference1" /> <!-- 这里替换成你想要的服务引用命名空间,直接写引用名即可 --> </NamespaceMappings>
- 保存文件后重新更新服务引用,后续所有更新操作都会沿用你设置的CLR命名空间,不会自动拼接项目根命名空间
方案3:无需修改服务引用的快速适配方案
如果不想改动服务引用的生成规则,直接在调用服务的代码文件头部添加根命名空间引用即可:
// 替换为Reference.cs里多出来的项目根命名空间 using NamespaceName;
添加后你在代码里直接写ReferenceName.ServiceMethod即可正常编译,不需要调整Reference.cs的生成内容
注意:如果配置后仍不生效,可先删除现有服务引用,重新添加时在「添加服务引用」窗口点击「高级」,在「命名空间」字段直接填写你想要的
ReferenceName再确认添加,就能从根源避免生成多余的命名空间前缀。
内容的提问来源于stack exchange,提问作者CeeSharpDev
相关产品推荐
相关产品推荐

