У меня есть проект WinForm в Visual Studio 2017, где я создал ссылку на конечную точку WCF из файла wsdl службы. Мой проект также использует несколько сторонних dll.
Я хочу, чтобы мой проект был отдельным exe-файлом, который не требует установки, поэтому я использую ILMerge для упаковки своих dll-файлов в один exe-файл.
При запуске моего сжатого exe-файла я получаю исключения об отсутствующих ссылках на конечную точку проекта WCF:
Не удалось найти элемент конечной точки по умолчанию, который ссылается на контракт в разделе конфигурации клиента ServiceModel.
Я попытался посмотреть, как добавить ссылки WCF через ILMerge, но не смог найти ничего подходящего. Я также не могу найти ничего WCF, связанного с выходной папкой bin моего проекта.
В настоящее время я использую ILMerge с помощью cmd:
ILMerge.exe /t:winexe /out:target.exe /targetplatform:v4,<.net v4 path> output.exe dll1.dll ... dlln.dll
Я ищу способ добавить ссылки на WCF вавтономный exe-файл через ILMerge или поиск эталонных выходных данных WCF, сгенерированных Visual Studio, в каталоге bin моего проекта.
Solution
Follow Abraham'sкомментарий , я нашел способ обойти «ссылку на службу».
Я использовал Svcutil.exe, чтобы сгенерировать определения для моей службы и вручную установить привязку к ней следующим образом:
BasicHttpBinding myBinding = new BasicHttpBinding();
myBinding.Security.Mode = BasicHttpSecurityMode.Transport;
EndpointAddress myEndpoint = new EndpointAddress(SERVICE_URL);
SoapServiceClient client = new SoapServiceClient(myBinding, myEndpoint);
Теперь при использовании ILMerge все упаковывается.