通过ILMerge合并WCF参考

我在Visual Studio 2017中有一个WinForm项目,其中已从服务的wsdl文件中创建了WCF终结点引用。 我的项目还使用了多个第三方dll。

我希望我的项目成为不需要安装的独立exe文件,因此我使用ILMerge将dll文件打包为单个exe文件。

运行压缩的exe时,我遇到了有关缺少对WCF项目终结点的引用的异常情况:

  

在ServiceModel客户端配置部分中找不到引用合同的默认终结点元素。

我尝试查找如何通过ILMerge添加WCF引用,但找不到任何相关内容。 在项目的bin输出文件夹中,我也找不到任何与WCF相关的内容。

我当前对ILMerge的用法是通过cmd:

ILMerge.exe /t:winexe /out:target.exe /targetplatform:v4,<.net v4 path> output.exe dll1.dll ... dlln.dll

我正在寻找一种通过ILMerge将WCF引用添加到独立exe的方法,或者在我的项目的bin out目录中找到Visual Studio生成的WCF引用输出。


解决方案

Abraham's comment之后,我找到了解决“服务参考”问题的方法。

我使用svcutil.exe为服务生成了定义,并像这样手动设置了绑定:

BasicHttpBinding myBinding = new BasicHttpBinding();
myBinding.Security.Mode = BasicHttpSecurityMode.Transport;
EndpointAddress myEndpoint = new EndpointAddress(SERVICE_URL);
SoapServiceclient client = new SoapServiceclient(myBinding,myEndpoint);

现在,使用ILMerge时,所有内容都会打包。

mingdou 回答:通过ILMerge合并WCF参考

通过添加服务参考,配置文件中还会生成一些额外的配置。因此,这可能会导致打包项目失败。或者,我们手动将System.servicemodel部分复制到新项目。 我建议您更改使用服务的方式。您的项目似乎是通过添加服务引用来调用服务的。这将带来其他一些类库和引用,从而导致难以打包项目。
请考虑以下致电服务的方式。
https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/how-to-use-the-channelfactory
https://docs.microsoft.com/en-us/dotnet/framework/wcf/samples/channel-factory
它将所需的类库完全封装在主项目中。
随时让我知道是否有什么可以帮助您的。

本文链接:https://www.f2er.com/3127695.html

大家都在问