wcf - 如何使用 SvcUtil.exe 在不覆盖服务配置名称的情况下设置命名空间?

标签 wcf svcutil.exe generated-code

我正在使用 SvcUtil.exe 生成我的 WCF 代码,如下所示:

SvcUtil.exe http://www.MyServer.com:8080/MyService/mex /out:"C:\test.cs" /mc

我可以让它工作,但如果我设置添加一个 /namespace参数( /namespace:*,MyNamespace ),它会覆盖 ConfigurationName生成的值 ServiceContractAttribute生成的界面:
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
[System.ServiceModel.ServiceContractAttribute(ConfigurationName="MyNamespace.MyServiceName")]
public interface MyServiceName
{ ... }

如果我不设置命名空间,ConfigurationName 的值是“MyServiceName”,这是正确的(“MyNamespace.MyServiceName”不正确且不起作用)。我试过添加一个/ServiceName:MyService 参数,但它告诉我它说

Error: The /serviceName: option conflicts with other options. Review your use of the tool.



如何在不覆盖 ConfigurationName 的情况下为生成的类指定命名空间?

最佳答案

我有同样的问题。我有一个 ServiceReference,它具有 ConfigurationName="MyWebService.MyWebServiceSoap",它是通过 VisualStudio.NET 2010 添加时生成的。当我使用 svcutil 从 msbuild 生成相同的类时,svcutil 希望将 ConfigurationName 设置为等于我设置的值对于命名空间。因此,如果我像这样设置/n 属性:

/n:*,MyApplication.MyWebService.MyWebServiceSoap

我为生成的类获得了正确的命名空间,但 ConfigurationName 也设置为 MyApplication.MyWebService.MyWebServiceSoap。

这好像说明VS.NET没有使用svcutil,还有posts我发现这似乎也表明了这一点。

我希望我有一个更好的答案,但由于我使用的是 MSBuild 中的 svcutil,我的解决方案是让 svcutil 使用不正确的 ConfigurationName 生成类,然后使用 FileUpdate 任务使用正则表达式修改该名称。同样,它远非理想,但我在 svcutil 文档中看不到任何允许您指定 ConfigurationName 的内容。

此外,值得一提的是 serviceName 选项用于从编译代码导出元数据,它对于生成客户端代理类无效,这可能是您收到 serviceName 选项冲突错误的原因。

见:http://msdn.microsoft.com/en-us/library/aa347733.aspx

关于wcf - 如何使用 SvcUtil.exe 在不覆盖服务配置名称的情况下设置命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4580082/

相关文章:

javascript - 来自在线 WCF 的空响应 - 长 json 字符串

Thrift 使用新编译器版本生成的文件以不同的方式命名类

c# - 带有签名证书的 WCF net.tcp

c# - WCF 服务引用命名空间与原始命名空间不同

c# - 使用无效的 SSL 证书从 WSDL 生成服务代理时出现问题

import - WCF : SvcUtil. exe 与导入问题

dart - dart 的代码生成器

jaxb - 如何使 JAXB 生成的类参与访问者模式?

c# - 将从 Android 应用程序发送的用户名和密码读入我的 WCF REST 服务?

c# - 如何在 WCF 和 Silverlight 应用程序上使用相同的类库