Хобрук: Ваш путь к мастерству в программировании

Как развернуть приложение C#, включив в него сторонние DLL-файлы?

Начнем с того, что я не очень разбираюсь в развертывании. Надеюсь, мой вопрос имеет смысл.

Мне нужно установить/развернуть приложение C# на нескольких рабочих столах. Для этого требуется сторонний файл DLL: библиотека C++ ("lpsolve55.dll", для тех, кто заинтересован, это бесплатный решатель MIP/LP, см. lpsolve.sourceforge.net/5.5/). Я использую его в своем коде следующим образом:

    [DllImport("lpsolve55.dll", SetLastError = true)]
    public static extern bool add_column(int lp, double[] column);

Для тестирования я вручную скопировал файл .dll в project\bin\release, и он отлично работает.

Мой вопрос: мне понадобится установщик для приложения, который также будет управлять установкой .dll. Я рассматриваю возможность развертывания ClickOnce, так как использую Visual C# 2008 Express Edition, но подойдет любое не слишком дорогое решение.

Что бы вы посоветовали?

02.06.2010

Ответы:


1

Просто добавьте свою DLL в проект в Visual Studio.

  • Щелкните проект правой кнопкой мыши в средстве просмотра решений.
  • Выберите «Добавить — существующий элемент».
  • Перейдите к DLL и нажмите «Добавить» или маленькую стрелку рядом с кнопкой «Добавить» и «Добавить как ссылку».
  • Выберите свою DLL в средстве просмотра решений.
  • Щелкните правой кнопкой мыши и выберите «Свойства».
  • Установите для параметра Создать действие значение Содержание.
  • Установите для параметра Копировать в выходной каталог значение Копировать, если новее.

Теперь ваш файл будет автоматически скопирован в папку отладки или выпуска.

Для развертывания вы можете добавить проект установки в свое решение. Когда вы добавите выходные данные вашего первого проекта в проект установки, DLL будет автоматически добавлена ​​в установку.

Но сетап-проект — это совершенно новая область. Так что начните работать с ним и задайте новый вопрос, если вы застряли с ним.

02.06.2010
  • Это будет работать для файлов DLL. Однако не для, например. XML-файлы по умолчанию, поскольку они будут помечены как «Файл данных» (столбец «Состояние публикации») и, как следствие, не будут скопированы в каталог установки приложения ClickOnce во время установки (см. Файл .deploy не развертывает файл XML). Исправление состоит в том, чтобы изменить файл данных на «Включить». 18.01.2016

  • 2

    Вы можете просто включить dll в свой проект и развернуть все это с помощью ClickOnce. Добавьте его в свое решение, установите действие сборки на «контент». Установите «копировать в выходной каталог» на «копировать всегда». Когда вы публикуете, вы должны увидеть файл в папке публикации. Вы также можете проверить диалоговое окно «Файлы приложения» (на вкладке «Публикация» в свойствах проекта), чтобы убедиться, что оно будет включено.

    02.06.2010

    3

    Если у ClickOnce есть возможность носить с собой этот файл DLL и копировать его в папку приложения, я бы использовал его. Было бы еще лучше, если бы он мог проверить, присутствует ли файл DLL в системе (папка system32), и затем использовать его, чтобы у вас не было нескольких версий двоичного файла на целевом компьютере.

    02.06.2010
    Новые материалы

    Шлюз с лицензией OSS, совместимый с Apollo Federation v2, появится в WunderGraph
    Сегодня мы рады сообщить, что мы сотрудничаем с поддерживаемой YC Tailor Technologies, Inc. для внедрения Apollo Federation v2. Реализация будет лицензирована MIT (Engine) и Apache 2.0..

    Это оно
    Ну, я официально уволился с работы! На этой неделе я буду лихорадочно выполнять последние требования Думающего , чтобы я мог сосредоточиться на поиске работы. Что именно это значит?..

    7 полезных библиотек JavaScript, которые вы должны использовать в своем следующем проекте
    Усильте свою разработку JavaScript Есть поговорка «Не нужно изобретать велосипед». Библиотеки — лучший тому пример. Это поможет вам написать сложные и трудоемкие функции простым способом...

    Базовое руководство по переносу концепций обучения в глубокое обучение
    Обзор По мере того, как машинное обучение становится все более мощным и продвинутым, модели, обеспечивающие эту расширенную возможность, становятся все больше и начинают требовать огромного..

    C в C.R.U.D с использованием React-Redux
    Если вы использовали React, возможно, вы знакомы с головной болью, связанной с обратным потоком данных. Передача состояния реквизитам от родительских компонентов к дочерним компонентам может..

    5 обязательных элементов современного инструмента конвейера данных
    В цифровом мире предприятия используют конвейеры данных для перемещения, преобразования и хранения огромных объемов данных. Эти конвейеры составляют основу бизнес-аналитики и играют..

    Случай использования npm3 вместо npm2 для разработки библиотеки
    Некоторое время назад я создал библиотеку на NodeJS, чтобы упростить рендеринг на стороне сервера и клиента. Он использует React и React Router для отображения соответствующего HTML на веб-сайте...