Объединение внешних библиотек .NET в один исполняемый файл.

1

Это простой вопрос. Я просто не могу запустить свою программу, если Newtonsoft.Json.dll не находится в папке с программой. Почему это? Я попытался добавить ссылку, добавил файл в корневой каталог проекта, добавлен в папку ресурсов, но ничего не получилось. Как запустить программу без файла Newtonsoft.Json.dll в папке программы? Я развиваюсь в приложении Windows Form.

ОБНОВИТЬ

Проблема решена благодаря расширению для внедрения ILMerge, действительно очень приятного пакета NuGet, который может объединять DLL сторонних разработчиков с одним исполняемым двоичным файлом. Для тех, кто хочет создать отдельное приложение, просто используйте ILMerge. Быстро, легко и чрезвычайно полезно. До встречи!

  • 0
    В чем проблема с этим, находясь в папке приложения? Вы хотели вывод одного исполняемого файла и ничего больше?
  • 0
    Да, автономное приложение
Показать ещё 1 комментарий
Теги:
visual-studio
winforms
ilmerge

3 ответа

3
Лучший ответ

Обычно, если ваша программа использует DLL, вам понадобится эта DLL в папке приложения (или в пути пользователя или в GAC).

Обычный способ распространения нескольких файлов - с установщиком. Вы можете написать его, используя либо расширение WiX, либо расширение VS Installer Projects. Теперь все ваши выходные файлы устанавливаются в один ряд со всеми остальными добрами, которые поставляются с установленной программой. Я предпочитаю этот метод.

Однако есть альтернативы:

  • Загрузите источник и скопируйте источник в свой основной проект, затем он будет скомпилирован в вашу основную сборку (убедитесь, что вы проверяете, разрешено ли это лицензией).

  • Используйте ILMerge для объединения всех ваших сборок в один бинарный файл.

  • 0
    @Hypister: Пожалуйста, рассмотрите изменение названия, которое менее связано с JSON.NET и больше касается распространения приложений .net с внешними DLL.
0

Если вы не хотите ссылаться на DLL в своей программе, вы можете установить ее на GAC на клиентской машине, но я не понимаю, какой контекст вы хотите

  • 0
    Я просто хотел бы запустить программу как отдельную программу. С DLL скомпилирован с ним.
0

Если вам просто нужна сериализация JSON. Можете ли вы отключить свою функциональность с помощью класса JavascriptSerializer который установлен с.Net?

http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer(v=vs.90).aspx

  • 0
    Это было бы очень полезно, но мне нужно использовать JSON.
  • 0
    это то, что делает JavascriptSerializer ... создает и читает JSON. Я вижу, что у вас есть решение, использующее ILMerge, который является отличным инструментом, но вы можете попробовать попробовать избежать этой дополнительной сложности сборки и придерживаться библиотек базовых классов. Трудно сделать, если у вас есть рабочее решение, хотя :)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню