12

我正在使用SvcUtil.exe从 wsdl 文件生成IClassName.cs文件,并且工作正常。我的问题是我不知道如何使用 SvcUtil.exe 的命令参数生成ClassName.svc文件。

运行 SvcUtil.exe 后,我想获得 WCF 服务,就像您从包含所有类 *.svc、*.cs 和接口的 Visual Studio 向导创建时一样。

谢谢你,Skrch

4

5 回答 5

22

首先要生成代理类,我们需要启动并运行我们的服务。因此,在使用此实用程序之前,请确保您的服务正在运行,没有任何问题。

验证服务状态后,转到 Visual Studio 命令提示符并运行以下命令。

svcutil http://localhost/MyService/ClassName.svc /Language=c#
/t:Code /out:ClassNameProxy.cs /config:ClassNameProxy.config

在上面的命令中,您应该将服务 URL ( http://localhost/MyService/Service1.svc) 替换为您的服务的 URL。由于我的服务是在 c#.net 中开发的,所以我选择使用 /Language=c# 标志以相同的语言生成代理。

/t:code 将指定输出应生成为代码。

/out:ClassNameProxy.cs /config:ClassNameProxy.config 参数将告诉实用程序按照这些参数值中指定的方式命名文件。运行命令后,工具将生成输出文件和配置文件。

之后,只需将 ClassNameProxy.cs 文件包含到您的项目中,然后打开 ClassNameProxy.config 文件并将条目复制到您的 web.config 文件中。您可能还需要更新 ClassNameProxy.vb 文件并根据您在项目中使用的命名空间更新命名空间。之后,您可以轻松地在代码中引用该服务并调用操作。

于 2014-06-03T12:48:55.010 回答
19

工具中的一些示例如何使用它

svcutil http://service/metadataEndpoint - 从正在运行的服务或在线元数据文档生成客户端代码。

svcutil *.wsdl *.xsd /language:C# - 从本地元数据文档生成客户端代码。

svcutil /dconly *.xsd /language:VB - 从本地模式文档生成 VisualBasic 中的数据协定类型。

svcutil /t:metadata http://service/metadataEndpoint - 从正在运行的服务下载元数据文档

svcutil myAssembly.dll - 为组件中的服务合同和关联类型生成元数据文档

svcutil myServiceHost.exe /serviceName:myServiceName - 为服务生成元数据文档,以及程序集中的所有相关服务合同和数据类型

svcutil myServiceHost.exe /dconly - 为程序集中的数据类型生成元数据文档

svcutil /validate /serviceName:myServiceName myServiceHost.exe - 验证服务托管

svcutil /t:xmlserializer myContractLibrary.exe - 为程序集中任何服务合同使用的 XmlSerializer 类型生成序列化类型

于 2016-08-31T21:48:54.457 回答
4

对于仍在寻找答案且无法使 2012 版本正常工作的任何人,Visual Studio 2015 和 .Net 4.5 已更新 svcutil.exe 工具以使用 /serviceContract 开关生成一个类,然后可以将其实现为 .svc 服务。您可能还需要提供 /syncOnly /wrapped /messageContract 开关,具体取决于原始 XSD

于 2016-06-14T13:46:53.550 回答
3

Svcutil.exe 基于来自服务的 Web 服务描述语言 (WSDL) 生成服务客户端代理。

打开 Visual Studio 命令提示符并运行命令

svcutil http://localhost/MyService/Service.svc  /Language=c#  /t:Code  /out:C:\Service\ServiceProxy.cs /config:C:\Service\ServiceProxy.config

它在 C:\Service 文件夹中生成两个文件,代理文件和配置文件,

更多细节在这里

于 2018-06-10T01:55:54.367 回答
1

我认为作为构建任务集成到 Visual Studio 2012 中的 .NET 4.5 Contract First Tool将帮助您生成所需的服务文件。

服务合同通常需要从现有服务中创建。在 .NET Framework 4.5 中,可以使用契约优先工具从现有服务自动创建数据契约类。要使用合约优先工具,必须在本地下载 XML 模式定义文件(XSD);该工具无法通过 HTTP 导入远程数据合约。

http://msdn.microsoft.com/en-us/library/hh674270(v=vs.110).aspx

于 2014-06-02T19:10:26.190 回答