2008-12-12 4 views
2

У меня есть раздражающий процесс сборки с использованием API System.Addins с ClickOnce. Использование System.Addins требует определенной структуры каталогов, а основной проект не ссылается на адаптеры, просмотр и контракт напрямую, что плохо работает с архитектурой ClickOnce.System.Addin & ClickOnce

Досадной частью процесса сборки является то, что я должен скопировать через событие post build .dlls из компонентов дополнения в каталог основного проекта приложения, а затем связать эти файлы вручную из основного проекта , так что ClickOnce будет включать их. Во-первых, это занимает 2 итерации сборки, чтобы заставить его правильно строить, во-вторых, это мешает контролю источника (я должен исключить скопированные файлы DLL надстройки из исходного элемента управления или любые внесенные изменения потребуют проверки).

Итак, мой вопрос в том, есть ли способ вокруг этого взлома? Что-то более элегантное?

ответ

-1

ClickOnce не позволяет устанавливать программное обеспечение там, где вы хотите. Он установит двоичные и dll в документах и ​​настройках. Вы можете в свойствах вашего проекта перейти на вкладку «Опубликовать» и выбрать «Файлы приложений», чтобы выбрать дополнительный файл для «Включить». Если для System.Addings требуется dll в определенной папке относительно вашей сборки, вы можете просто создать папку в своем проекте и включить сюда DLL. Это может сработать. Если нет, у меня нет «взлома» или другого решения, clickonce велик, но ограничен некоторыми функциями.

0

Спасибо за ваш вклад, я в настоящее время делаю это так, как вы упомянули; создав папку в моем проекте и включив в нее DLL. Он работает, но это уродливое решение, и это мешает Source Control.

Я знаю об ограничениях, связанных с ClickOnce, я надеялся, что вокруг этого может быть способ. Например, я где-то читал, что могу использовать проекты развертывания для создания соответствующих зависимостей, необходимых для конкретной структуры. Проблема с этим заключается в том, что когда он будет развернут для общественности, нет простого способа (в рамках ClickOnce) обновить эти зависимости.

+0

Поскольку порядок сообщений не гарантирован на то же самое (переупорядочивание на основе голосов вверх и вниз), ваш ответ на Даок будет лучше, чем комментарий к его сообщению, а не новый пост. не пытаясь быть критическим, просто хочу помочь SO новичкам :). – codeConcussion 2008-12-30 14:18:21

3

Я не могу полностью ответить на ваш вопрос, но, похоже, вы создаете развертывания ClickOnce через Visual Studio. Я бы выбрал этот метод и вместо этого использовал MageUI. Это автономный исполняемый файл, который можно найти в каркасе SDK, который будет генерировать файлы манифеста приложений и развертывания. Он поставляется с версией gui (mageui.exe) и версией командной строки (mage.exe).

Маг не может избавиться от вашего события после сборки, но он должен покончить с необходимостью ссылаться на файлы, чтобы получить ClickOnce, чтобы увидеть их.

0

Решение, которое я использую, состоит в том, чтобы иметь одну выходную папку для всех проектов. Каждый проект помещает свои собственные файлы в правильную подпапку. Проект bootstrapper приложения также помещает свои DLL в выходную (корневую) папку. Когда вы затем создаете клик-файлы для загрузчика, он будет извлекать все содержимое из выходной папки.

Самая трудная часть на самом деле получить все библиотеки DLL в нужном месте (и есть все DLL только один раз)

0

Я решил эту проблему путем добавления сборки трубопровода, как содержание в основной состав раствора.

Для этого измените выходную папку из (/ bin/debug/bin/Release) на что-то другое. Я использовал ../lib, иначе вы бы получили визуальную студию, которая не может ссылаться на эту ошибку файла.

Создание папки трубопроводов в основной раствор

  • \ AddInSideAdapters
  • \ AddInViews
  • \ Контракты
  • \ HostSideAdapters

правой кнопкой мыши на каждой из папок и нажмите «добавить существующий элемент», чтобы просмотреть все файлы, а затем перейдите к своему ../lib (или где бы вы не выходили et), а затем вытащите кнопку добавления (щелкните стрелку вниз) и нажмите «Добавить как ссылку».

Щелкните правой кнопкой мыши по каждому файлу и установите его в Контент.

Это создаст файл обновления, указывающий на ваши сборки, и они будут включены в манифест clickonce.