Пакет 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 года)

Другие вопросы по тегам