2010-06-08 2 views
2

Я пытаюсь объединить два файла. Одним из них является .net3.5 применение МОФ и другой WPF notify icon dllbuild single file application

я использую следующую команду:

IlMerge /target:winexe /out:PS.exe "PlayerSearcher.exe" "Hardcodet.Wpf.TaskbarNotification.dll" 

Но когда я запустить результат assebmly мое приложение разбившийся с этой ошибкой

EventType: clr20r3 Р1: ps.exe
P2: 1.0.0.0 P3: 4c0ee52f P4 : presentationframework P5: P6 3.0.0.0: 4938d608 Р7: 9A1 P8: 46 P9: System.IO.IOException

Почему? И как я могу создать одно приложение для файлов?

+0

Обратите внимание, что невозможно объединить сборки WPF с использованием ILMerge (до версии 2.11.0502) – froeschli

ответ

1

Просто догадайтесь, но вам может потребоваться объединить дополнительные ссылки. Например, возможно, у вас также есть somethingelse.dll, скопированный в папку bin файла проекта вместе с EXE и забыл включить его?

Вы не должны сливаться .NET Framework сборки из GAC, хотя, если не будет вопрос вокруг «Copy Local» истина/ложь настройки:

Теперь проект вы модифицированную воли автоматически все ссылаются на сборки объединены. Только сборки с пометкой «Копировать локально» будут объединены в , поэтому сборочные сборки и сборки GAC по умолчанию не будут объединены.

- http://blogs.msdn.com/b/jomo_fisher/archive/2006/03/05/544144.aspx

Может быть, просто для отладки, попробуйте копировать .NET Framework классы локально в свой проект и объединить их и увидеть, если это работает. Это может помочь начать выделение ошибки.

+0

Но какие классы я должен копировать? PresentationCore, WindowsBase и т. Д.? – Neir0

+0

Это не классы, а сборки, которые вам нужно использовать. Я бы предложил посмотреть узел ссылок в VS или в диалоговом окне и установить все ссылки на Copy Local, а затем использовать MSIL во всей папке bin ваших сборок. В этой статье приведены некоторые рекомендации по управлению сборками: http://msdn.microsoft.com/en-us/library/wkze6zky(VS.80).aspx –