2009-02-15 2 views

ответ

12

Один из способов - использовать ILMerge. Это объединит несколько сборок в один (подумайте, объединяя все библиотеки DLL и основной exe в один exe).

+0

Знаете ли вы о каких-либо хороших учебниках по использованию этого инструмента? – Kredns

+0

Короткая, но полезная статья из CodeProject: http://www.codeproject.com/KB/dotnet/mergingassemblies.aspx –

+0

К сожалению, это не будет работать с сборками WPF (до версии 2.11.0502). – froeschli

2

Да :) Но вы должны поместить все свои источники в единую сборку и скомпилировать ее в EXE. Также обратите внимание, что целевая система также должна иметь установленную инфраструктуру .NET.

Обратите внимание, что политики безопасности в целевой системе могут препятствовать прямому запуску приложения.

Наконец, если вы не «NGEN», ваш код будет jitted при первом запуске. Это потребует некоторых затрат времени на запуск. В некоторых случаях это может быть значительным.

+0

Дитцинг, который происходит, не должен отличаться от того, была ли программа программой набора сборок. При каждом вызове метода каждый метод выполняется по методу. Предположительно, методы будут вызываться в той же последовательности, будет ли программа упакована в один .exe или несколько сборок. –

+0

@ Майкл - если только не было редактирования, единственная ссылка на JIT относится к NGEN; в этом случае нет: он * не будет * дробиться по методу за счет метода ... –

+0

@Marc - Я думал, что комментарий NGEN подразумевает, что объединение сборок в один .exe приведет к увеличению запуска время с несколькими сборками. Другими словами, я пытался сказать, что, если вы хотите или нуждаетесь в NGEN, вероятно, не зависит от объединения ваших сборок. –

2

Если вы хотите также объединить сборки .Net, необходимые вашему приложению, вы можете использовать что-то вроде This для компиляции в System.dll, System.Windows.Forms.dll и т. Д., Поэтому конечному пользователю даже не понадобится .Net.

+0

Это довольно круто, мне просто жаль, что у меня не было 1500,00 долларов. – Kredns

+1

Я предполагаю, что Mono теперь предлагает аналогичную функциональность, а Mono - бесплатно. –

0

Я получил от этого подобного вопроса (жаль, кто отправил ответ - я не могу найти оригинал, чтобы связать его здесь):

how to embed your application’s dependent DLLs inside your EXE file

Это отрывок из Джеффри Рихтера CLR через C#. Я еще не пробовал, но выглядит очень многообещающе. Я думаю, что он будет работать и с WPF (собираюсь выяснить для себя).

+0

Hah! Как только я публикую комментарий, я запускаю accoss оригинал: http://stackoverflow.com/a/3283372/513847. –

Смежные вопросы