2011-01-10 1 views
1

У меня есть простое приложение в C#. Я бы хотел, чтобы DLL была «внутри» EXE-файла. Как мне это сделать?Как заставить DLL строить с помощью exe, так что есть только один файл?

+0

Вы также строите dll или это то, от чего вы зависите от другого источника? – Tim

+0

@tim его from anotehr source –

+0

Зачем вам это нужно? –

ответ

5

ILMerge делает именно то, что вы ищете


страница немного вводит в заблуждение, ILMerge работает на V3 и V4 сборок на его actual webpage

ILMerge должна хорошо работать с новой версии .NET. Просто используйте опцию :/targetplatform: v4 ,. Для версии версии 3.5 вам, вероятно, не нужна , чтобы установить целевую платформу, но вам может понадобиться добавить каталог v3.5 framework в качестве опции/lib, чтобы можно было найти сборки из . (Если они не находятся в GAC, в которых случае они будут найдены в любом случае.) Для запуска ILMerge в версии v4.0 используйте этот конфигурационный файл .


Чтобы ответить, как вы используете его из вашего вопроса, в другом ответе

Использование: ILMerge [/ Библиотека: каталог] * [/ журнал [: имя файла]] [/ keyfile: filename [/ delaysign]] [/ internalize [: filename]] [/ t [arget] : (библиотека | exe | winexe)] [/ closed] [/ ndebug] [/ ver: version] [/copyattrs [/ allowMultiple]] [/ xmldocs] [/ attr: имя_файла] [/ ta rgetplatform: [,] |/v1 | /v1.1 |/v2 |/V4] [/ useFullPublicKeyForReferences] [/ подстановочные] [/ zeroPe Kind] [/ allowDup: тип] * [/ союз] [/ выравнивание: п] /выход: имя файла [...]

так ilmerge /out:Combined.exe mainFile.exe otherDll.dll для вашего случая, поскольку большинство по умолчанию должно быть хорошо

+0

@scott DLL построена уже из другого источника –

+0

@herrow: Новые версии будут поддерживать другие вещи - какую версию .NET вы используете и какой тип это приложение? –

+0

@reed winforms версия 3.5NET –

2

ILMerge может сделать это для сборок .NET - хотя она имеет некоторые ограничения с определенными типами узлов (например, WPF сборки).

Вы можете, в качестве альтернативы, use the assembly as a resource and load it on demand, или использовать один из многих коммерческих обфускаторов, которые поддерживают слияние сборки. Многие из сторонних опций поддерживают более сложную слиянию сложения и/или зависимость. Хорошим примером этого является SmartAssembly, который поддерживает оба варианта.

+0

+1. Ты избил меня к этому СНОВА! Моя новая цель в жизни - научиться печатать быстрее, чем Рид Копси! ;-) – David

+0

@ree DLL построена уже из другого источника –

+0

@herrow: Какого типа DLL? Является ли это native/managed/.NET (v?) –

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