VSIX не устанавливает зависимости в VS 2015


Я разрабатывал небольшое расширение Visual Studio (исключительно для внутреннего использования), и оно состоит из самого проекта VSIX, который затем ссылается на другую dll (в том же решении), которая затем ссылается на какой-то другой проект (также в том же решении). Все это прекрасно работает, когда я отлаживаю расширение и запускаю его в экспериментальном экземпляре Visual Studio. Однако если я попытаюсь установить VSIX в Visual Studio for real (дважды щелкнув файл .vsix), это не сработает. Есть один команда, которая не ссылается ни на что из других сборок, которая работает нормально, а затем есть другая команда, которая делает это просто молча терпит неудачу.

Глядя на установку под C:Usersmatt.burlandAppDataLocalMicrosoftVisualStudio14.0ExpExtensions и C:Usersmatt.burlandAppDataLocalMicrosoftVisualStudio14.0Extensions я вижу разницу в том, что другие зависимости, где не установлен VSIX.

Я видел этот вопрос для VS2010: пакет VSIX не включает локализованные ресурсы ссылочной сборки

Но решение там, похоже, не имеет отношения к делу. Я не вижу свойства Output Groups Included in VSIX для установки.

Я попробовал посмотреть на source.extension.vsixmanifest, и у него есть вкладка для зависимостей. Я выбрал New, выбрал A project in current solution в качестве источника, выбрал один из моих проектов, выбрал Embed in this VSIX, но когда я нажимаю Ok, я получаю сообщение об ошибке:

Редактор манифестов VSIX

Для имени "VsixProjectReferenceContentItemObjectextender" под CATID {2F0FA3B8-C855-4a4e-95A5-CB45C67D6C27} не удалось найти расширителей. Убедитесь, что поставщик экстендера для этого Экстендер зарегистрирован правильно.

1 2

1 ответ:

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

Затем, глядя на файл .vsixmanifest в XML-редакторе, я мог бы выяснить, правильный синтаксис для ссылки на сборку и копирования ее в мой реальный проект. Для записи (поскольку документация по .vsixmanifest здесь совсем не информативна), это выглядит так:

<Asset Type="Microsoft.VisualStudio.Assembly" d:Source="Project" d:ProjectName="MyProject" 
       Path="|MyProject|" AssemblyName="|MyProject;AssemblyName|" />

Где MyProject - имя зависимой библиотеки классов в вашем решении, которая должна быть включена в VSIX.