我在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时,所有内容都会打包。