2010-10-22 2 views
4

В моем приложении мне нужно переупаковать и распаковать некоторые файлы. Для этого я использовал DotNet Zip Library (Ionic.Zip.dll-- DotNet Zip Lib)Устранить зависимость DLL от приложения

Все работает нормально, но когда я беру EXE из своего файла и пытаюсь запустить его из другой папки, он не запускается. Я должен держать файл Ionic.Zip.dll в папке, где находится мое приложение. Есть ли выход? Мне просто нужен файл EXE без привязки строк. Или есть другой вариант, кроме DotNet Zip Lib.

ответ

12

Когда вы добавляете ссылку на другую сборку (например, стороннюю DLL) на ваш проект C#, компилятор не добавляет содержимое этой сборки в ваш EXE; он просто создает ссылку, в которой говорится, что вашей программе потребуется загрузить эту DLL, когда она будет запущена. Вполне нормально распространять .NET-программу как EXE-файл и файлы DLL, которые ему нужны.

Но если вы предпочитаете, вы можете объединить их в один файл EXE. Существует несколько различных инструментов, которые могут объединять несколько сборок .NET в один. Посмотрите на ILMerge или .NETZ.

+0

только ответить, что напрямую решает эту проблему - не объясняет, в чем проблема, хотя (-: – Murph

+0

@Murph: Покушение объяснение –

+0

, который работает, я получаю только один upvote хотя (-: – Murph

0

Если это проект с открытым исходным кодом, вы можете просто включить исходный код в свой проект, не добавляя ссылку на «dll».

+0

true, это возможно. Но лучше использовать ILMerge или какой-либо другой механизм слияния или встраивания. – Cheeso

1

Вы можете использовать .net для этого, посмотрите на Packaging namespace или, если вы можете использовать формат gzip, вы дали class для этого. Используя это, вы удалите зависимость от своего проекта.

+0

Но я думаю, что файлы gzip и Normal Zip отличаются. – Swanand

+0

@Swanand Purankar - методы пространства имен пакетов используют zip формат. Ознакомьтесь с http://msdn.microsoft.com/en-us/library/system.io.packaging.zippackage.aspx. –

2

Посмотрите на этой чистой C# библиотеки без внешних зависимостей:

Он может быть включена в приложение и компилируется непосредственно в единое EXE - без внешних ZIP библиотек нужно.

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