Ни за что в жизни я, может казаться, не получаю свою.NET 4 приложения, объединяющиеся правильно с ILMerge. Даже после установки/targetplatform, / lib,/ndebug и добавление пользовательского файла ILMerge.exe.config выходной файл не работает правильно (это, кажется, не может "найти" объединенные библиотеки).
Я попробовал это и это напрасно. Я не могу даже заставить это создавать, если я не использую файл конфигурации, но когда я делаю это не работает. Без файла конфигурации я последовательно получаю сообщение об ошибке "Неразрешенная ссылка на сборку, не позволенная: PresentationFramework".
Вот текущее состояние моей команды ILMerge, используемой в качестве события сборки сообщения:
ilmerge.exe /out:C:\Users\Logan\Development\Projects\OrangeNote\OrangeNote\bin\Release\OrangeNote.exe
/ndebug /targetplatform:v4,C:\Windows\Microsoft.NET\Framework\v4.0.30319
/lib:"C:\Windows\Microsoft.NET\Framework\v4.0.30319"
/lib:"C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies"
"C:\Users\Logan\Development\Projects\OrangeNote\OrangeNote\obj\Release\OrangeNote.exe"
"C:\Users\Logan\Development\Projects\OrangeNote\OrangeNote\..\..\..\Libraries\Lucene.Net\src\Lucene.Net\bin\Release\Lucene.Net.dll"
"C:\Users\Logan\Development\Projects\OrangeNote\OrangeNote\..\..\..\Libraries\Ookii.Dialogs\src\Ookii.Dialogs.Wpf\bin\Release\Ookii.Dialogs.Wpf.dll"
"C:\Users\Logan\Development\Projects\OrangeNote\OrangeNote\..\..\..\Libraries\SharpZipLib\bin\ICSharpCode.SharpZipLib.dll"
"C:\Users\Logan\Documents\Visual Studio 2010\Projects\HumanInterfaceProject\HumanInterfaceProject\bin\Release\HipLib.dll"
Какие-либо мысли о том, что я делаю неправильно??
Я заметил, что одна из ваших сборок называется "dialogs.wpf". В настоящее время ILMerge некорректно объединяет сборки с ресурсами WPF в них.
Об этом не так много информации, но в этом сообщении форума упоминается возможное решение, и есть несколько возможностей, упомянутых в ответах на этот вопрос, но самым популярным предложением является покупка коммерческой альтернативы - я не знаю, возможно ли это для вас.
Есть обсуждение здесь, которое объясняет, почему это не работает, и есть предложение здесь, что изменение ссылки на ресурс в xaml может помочь решить проблему.
Я написал Майку Барнетту, автору ILMerge, и он объяснил, что, к сожалению, он вообще не предназначен для работы с приложениями WPF, и был удивлен, когда сказал ему, что он работает с моим WPF. 3.5 приложение. Поскольку он на самом деле не поддерживается, я просто спишу это сейчас и подожду, пока не появится другая альтернатива.
Кстати, я попробовал .NET Reactor из Eziriz , и он действительно работал отлично, но стоит 180 долларов, которые на хобби-проект я пока не собираюсь тратить. Но это намного дешевле, чем другая коммерческая альтернатива от Red Gate, поэтому подумал, что упомянул бы об этом.
Обновление: Майк Барнетт теперь считает принятый ответ на этот вопрос лучшим решением. По его словам, если бы он знал, что это возможно, он никогда бы не написал ILMerge.