2013-08-30 3 views
0

Я не могу найти решение, которое я ищу в похожих вопросах, но это может быть из-за отсутствия навыков поиска.Как добавить ссылку на проект, чтобы избежать дополнительных загрузок

В любом случае, у меня есть using System.Runtime.InteropServices; в моем проекте C#, который я использую, чтобы разархивировать загруженный .zip-файл.

Проблема возникает из-за того, что я ненавижу установщиков ... Таким образом, мне нужен способ включить файл Interop.Shell32.dll в .exe, который находится в папке \ bin \ Debug проекта.

Таким образом, избегая необходимости в установщике, который добавляет Interop.Shell32.dll в путь программы и избегает необходимости загрузки дополнительного файла вместе с .exe, если я не использую установщик.

Что было бы лучшим/наиболее эффективным способом для меня? (Предпочтительно без необходимости включать в программу дополнительную нагрузку)

+0

http://msdn.microsoft.com/en-us/library/system.io.compression.zipfile.aspx – SLaks

+1

Вы думали о добавлении файла почтового индекса в качестве ресурса в ваш проект? – Sam

+0

@Sam Нет, потому что zip-файл изменится в будущем (zip-файл получит дополнительный контент) – Yorrick

ответ

1

Имеется несколько полезных инструментов; Я не совсем уверен, чего ищут, поэтому я приведу небольшой перечень инструментов/подходов, которые я использую.

  1. ILMerge для объединения нескольких управляемых сборок, такие как выходных проекта и внешних сборки/ИХ. Убедитесь, что PIA/сборка, объединенная, разрешена к распространению как таковая или см. № 3.

  2. Вложенные ресурсы для включения «внешних данных», включая не связанные DLL, которые могут быть внешними требованиями для управляемых сборок. Эти не связанные библиотеки DLL/COM могут быть связаны/загружены во время выполнения после извлечения.

  3. dotNetInstaller для создания унифицированных пусковой установки/ (это самозагрузка и может обеспечить внедренные ресурсы). Это можно использовать в сочетании с обычным установщиком MSI (VS Setup Project) для обработки таких предварительных условий, как установка официальных дистрибутивных пакетов или, которые могут быть просто использованы для запуска исполняемого файла (без «установщика», кроме тех, которые необходимы для предварительных условий).

+0

Точная вещь, которую я ищу, будет способом встраивания файла Interop.Shell32.dll в проект, единственный способ, которым я могу думать, - использовать его как встроенный ресурс, но как бы добавить это? ресурс как ссылка? – Yorrick

+0

@Yorrick Если Interop.Shell32.dll является PIA (и отдельно распространяемым), то ILMerge является самым простым способом. Пространство имен/ресурс будет найдено загрузчиком слияния, как если бы он был «встроен» в текущий проект. – user2246674

+0

Я не совсем уверен, что вы подразумеваете под PIA, но .dll поставляется стандартно (насколько я могу судить) с визуальной студией, я назвал ссылку в своем проекте, используя 'using System.Runtime.InteropServices; ' – Yorrick

1

Вы можете использовать ILMerge. Взято с веб-страницы Microsoft:

ILMerge - это утилита для объединения нескольких сборок .NET в единую сборку .NET. Он работает как с исполняемыми файлами, так и с DLL и имеет несколько опций для управления обработкой и форматированием вывода.