Пакет VSIX не включает ссылочные зависимости проекта
У нас есть пакет Visual Studio (VS Package), который ссылается на проект библиотеки классов (Проект A). Проект A, в свою очередь, ссылается на другой проект библиотеки классов (проект B).
Таким образом, структура зависимостей выглядит следующим образом: VS Package > Project A > Project B
Все проекты существуют внутри одного и того же решения, и зависимости были установлены как правильные ссылки на проекты.
Если я соберу пакет в Visual Studio и загляну в папку bin/Debug, все необходимые сборки будут в том числе и в Project B. Однако при развертывании пакета присутствуют только сборки Проекта A, а Проект B отсутствуют. Как мне сказать Visual Studio включить косвенную зависимость Project B в пакет?
В этом документе MSDN говорится, что "по умолчанию в многопроектном решении, если проект, который выводится в пакет VSIX, содержит ссылку на другой проект в том же решении, он включает в себя зависимости этого проекта".
Однако я считаю, что это просто не тот случай.
Мой вопрос очень похож на этот, за исключением того, что у меня проблемы с основной сборкой проекта, а не со сателлитами локализации. Ответ в этом другом посте не работает для меня, потому что, кажется, работает только для спутниковых сборок.
Есть ли какая-либо другая группа выходных данных, которую я могу указать, чтобы в пакет также входили косвенные зависимости?
Спасибо за поиск.
2 ответа
В данном конкретном случае проще всего обратиться к проекту B из проекта VSPackage и установить для свойства "Reference Output Assembly" значение False, чтобы избежать введения зависимости во время компиляции.
У меня была похожая проблема: мой проект VS Package ссылался на другой проект пакета VS (~Project A), который, в свою очередь, ссылался на кучу других проектов (~Project B), содержащих основную часть нашего расширения.
Вдохновленный этим ответом: пакет VSIX не включает локализованные ресурсы ссылочной сборки, я добавил 'BuiltProjectOutputGroup;BuiltProjectOutputGroupDependencies;GetCopyToOutputDirectoryItems;SatelliteDllsProjectOutputGroup
к Output Groups Included in VSIX
свойство ссылки из пакета VS на проект A.
Это привело к удалению всех библиотек зависимостей в ...\Debug\
папка для моего проекта VS, но они все еще не включены в VSIX.
Наконец я пошел и добавил BuiltProjectOutputGroup;BuiltProjectOutputGroupDependencies;GetCopyToOutputDirectoryItems;SatelliteDllsProjectOutputGroup
Флажки для всех ссылок из моего Проекта A на каждый из моих Проектов B - тогда они все были включены в VSIX.
(Кстати, это происходит с Visual Studio 2013, но, похоже, мало что изменилось с 2010 года)