首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过ILMerge合并WCF引用

通过ILMerge合并WCF引用
EN

Stack Overflow用户
提问于 2019-11-10 20:26:19
回答 1查看 152关注 0票数 2

我在VisualStudio2017中有一个WinForm项目,其中我从服务的wsdl文件中创建了一个WCF端点引用。我的项目还使用了几个第三方dll。

我希望我的项目是一个不需要安装的独立的exe文件,所以我使用ILMerge将我的dll文件打包到一个exe文件中。

在运行compacted时,我得到了有关WCF项目端点缺少引用的异常:

无法在ServiceModel客户端配置部分找到引用契约的默认端点元素。

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

我目前使用的ILMerge是通过cmd:

代码语言:javascript
复制
ILMerge.exe /t:winexe /out:target.exe /targetplatform:v4,<.net v4 path> output.exe dll1.dll ... dlln.dll

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

溶液

Abraham's comment之后,我找到了一种解决“服务引用”问题的方法。

我使用Svcutil.exe生成服务的定义,并手动设置绑定如下:

代码语言:javascript
复制
BasicHttpBinding myBinding = new BasicHttpBinding();
myBinding.Security.Mode = BasicHttpSecurityMode.Transport;
EndpointAddress myEndpoint = new EndpointAddress(SERVICE_URL);
SoapServiceClient client = new SoapServiceClient(myBinding, myEndpoint);

现在,当使用ILMerge时,所有的东西都打包了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-12 06:21:36

通过添加服务引用,还会在配置文件中生成一些额外的配置。因此,它可能会导致项目包装失败。或者,我们手动将System.servicemodel部分复制到新项目。我建议你改变使用服务的方式。您的项目似乎通过添加服务引用来调用服务。这将带来一些其他类库和引用,这导致很难打包项目。

请考虑以下呼叫服务的方式。

https://learn.microsoft.com/en-us/dotnet/framework/wcf/feature-details/how-to-use-the-channelfactory

https://learn.microsoft.com/en-us/dotnet/framework/wcf/samples/channel-factory

它在主项目中完全封装了所需的类库。

如果有什么需要我帮忙的,请随时通知我。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58792636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档