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 ответ:
Я понял, что должен смотреть на активы, а не на зависимости, но я не смог добавить в качестве актива с помощью редактора манифеста либо с аналогичной ошибкой. Поэтому я создал совершенно новый, пустой проект VSIX в новом решении, добавил пустую библиотеку классов, сослался на нее в проекте VSIX и затем посмотрел на редактор манифеста. По какой-то причине я смог добавить сборку без каких-либо проблем.
Затем, глядя на файл
.vsixmanifest
в XML-редакторе, я мог бы выяснить, правильный синтаксис для ссылки на сборку и копирования ее в мой реальный проект. Для записи (поскольку документация по.vsixmanifest
здесь совсем не информативна), это выглядит так:<Asset Type="Microsoft.VisualStudio.Assembly" d:Source="Project" d:ProjectName="MyProject" Path="|MyProject|" AssemblyName="|MyProject;AssemblyName|" />
Где
MyProject
- имя зависимой библиотеки классов в вашем решении, которая должна быть включена в VSIX.