gpt4 book ai didi

c# - 通过 ILMerge 合并 WCF 引用

转载 作者:太空宇宙 更新时间:2023-11-03 11:57:53 27 4
gpt4 key购买 nike

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

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

在运行我的压缩 exe 时,我收到关于缺少对 WCF 项目端点的引用的异常:

Could not find default endpoint element that references contract in the ServiceModel client configuration section.

我尝试查找如何通过 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 为我的服务生成定义,并像这样手动设置绑定(bind):

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

现在使用 ILMerge 时一切都会打包。

最佳答案

通过添加服务引用,配置文件中也会生成一些额外的配置。因此,可能会导致项目打包失败。或者,我们手动将 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
完整封装了主工程所需的类库。​​
如果有什么我可以帮忙的,请随时告诉我。

关于c# - 通过 ILMerge 合并 WCF 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58792636/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com