Настройка проекта с двумя основными выходами с использованием общих зависимостей

У меня есть решение в Visual Studio с 4 проектами - 2 приложения формы Windows, библиотека классов и проект установки.

Оба приложения форм Windows ссылаются на проект библиотеки классов.

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

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

3 ответа

Очень просто:

Для каждого проекта установки, в котором необходимо ссылаться на некоторые сборки и использовать каждую из них в двух разных местах, создайте два MergeModuleProjects. Первый содержит файловую систему относительно одного из мест сборки, другой содержит файловую систему относительно другого места сборки. Тогда проект установки, который у вас изначально был, будет ссылаться только на 2 проекта MergeModuleProjects. проект установки против проекта модуля слияния

Пример: Setup1 имеет следующую файловую систему:

      folder1
{
  folder2
  {
    assembly1
  }
  folder3
  {
    asembly3
  }
}

Затем вы заменяете структуру выше следующей:

Setup1 имеет следующую файловую систему: (нет) Setup1 ссылается на MergeModule1 и MergeModule2 MergeModule1 имеет следующую файловую систему:

      folder1
{
  folder2
  {
     assembly1
  }
}

MergeModule2 имеет следующую файловую систему:

      folder1
{
   folder3
   {
     assembly1
   }
}

Надеюсь, что это все еще актуально. Вот как я это сделал. Предполагая, что все зависимости скопированы в выходной каталог ваших проектов:

  1. Щелкните правой кнопкой мыши Добавить> Сборка...
  2. Перейдите в выходной каталог ваших проектов и выберите необходимые библиотеки
  3. Удалить дубликаты, если таковые имеются

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