У меня возникла проблема, которая была первоначально описана. У меня есть приложение Winform и консольное приложение как два отдельных проекта, но один проект установки обрабатывает оба.
И приложение Winform, и приложение консоли используют одни и те же две внешние сборки: одна не является частью решения (ссылка на файл в папке), а другая - из проекта класса C # (ссылка на проект).
Я обнаружил, что установщик предполагает, что выходные данные проекта объединены в одну папку на установочном компьютере. Таким образом, все общие сборки также будут находиться вместе с исполняемыми файлами, которые в них нуждаются. Поэтому, если вы добавляете выходные данные проекта из первого исполняемого файла в папку, именно поэтому вы видите, что появляются все его зависимости, а затем, когда добавляются выходные данные второго проекта, отображаются только еще не добавленные сборки.
Неважно, если вы создаете подпапки в папке приложения, Visual Studio, по-видимому, обрабатывает папку приложения как единое целое ... в отношении вывода проекта (exe, dll и res).
Есть два способа решить эту проблему. Первый заключается в создании отдельного проекта установки для каждого исполняемого файла. В большом проекте это может быть много проектов установки.
Если вы хотите сохранить все в одной установке, лучшим вариантом является использование GAC для общих сборок, что описано в другой статье переполнения стека здесь: Использование Visual Studio Setup Project для автоматической регистрации и GAC COM Interop DLL
MSI может выполнить работу. Щелкните правой кнопкой мыши «Файловая система на целевой машине»,
Добавить, GAC. Щелкните правой кнопкой мыши по этой добавленной папке, Добавить, Вывод проекта. Тот
гарантирует, что сборка заточена.
GAC - лучшее решение, на мой взгляд, потому что ваши сборки управляются уровнем .NET, если вы позже внесете в них изменения и улучшения. Одним из преимуществ .NET является устранение старых проблем с DLL-адом, которые были в Win 98 и предыдущих версиях Windows. Я настоятельно рекомендую использовать его для вашего общего кода.