Как правильно установить значок и файл лицензии в файле vsixManifest?

Я только что опубликовал свое первое расширение Visual Studio, и у меня возникли проблемы с установкой значка и файла лицензии в файл source.extension.vsixmanifest.

Я пробовал гуглить и получать помощь от инструментов искусственного интеллекта, таких как
Я создал проект, используя шаблон рефакторинга кода (стандарт .Net), который генерирует два проекта — один для кода и один для vsix, и вручную изменил лишь несколько вещей в файле vsixManifest. Вот текущий файл:

<?xml version = "1.0" encoding = "utf-8"?>
<PackageManifest Version = "2.0.0" xmlns = "http://schemas.microsoft.com/developer/vsx-schema/2011" xmlns:d = "http://schemas.microsoft.com/developer/vsx-schema-design/2011">
  <Metadata>
    <Identity Id = "AutoEntityGenerator..3633938B-4D62-4E7A-92C3-BCBBD5DEEFE6"
              Version = "1.0.0"
              Language = "en-US"
              Publisher = "Zohar Peled"/>
    <DisplayName>AutoEntityGenerator</DisplayName>
    <Description xml:space = "preserve">Automatically generates DTO and mapping classes based on your domain entities.</Description>
    <Icon>AutoEntityCreator.png</Icon>
  </Metadata>
  <Installation>
    <InstallationTarget Id = "Microsoft.VisualStudio.Community" Version = "[16.0,17.0)">
      <ProductArchitecture>x86</ProductArchitecture>
    </InstallationTarget>
    <InstallationTarget Id = "Microsoft.VisualStudio.Community" Version = "[17.0,)">
      <ProductArchitecture>amd64</ProductArchitecture>
    </InstallationTarget>
  </Installation>
  <Dependencies>
    <Dependency Id = "Microsoft.Framework.NDP" DisplayName = "Microsoft .NET Framework" d:Source = "Manual" Version = "[4.5,)" />
  </Dependencies>
  <Assets>
    <Asset Type = "Microsoft.VisualStudio.MefComponent" d:Source = "Project" d:ProjectName = "AutoEntityGenerator" Path = "|AutoEntityGenerator|"/>
  </Assets>
  <Prerequisites>
    <Prerequisite Id = "Microsoft.VisualStudio.Component.CoreEditor" Version = "[15.0,)" DisplayName = "Visual Studio core editor" />
    <Prerequisite Id = "Microsoft.VisualStudio.Component.Roslyn.LanguageServices" Version = "[15.0,)" DisplayName = "Roslyn Language Services" />
  </Prerequisites>
</PackageManifest>

Когда я пытаюсь добавить тег <License>, я получаю следующее предупреждение:

Элемент «Метаданные» в пространстве имен «http://schemas.microsoft.com/developer/vsx-schema/2011» имеет недопустимый дочерний элемент «Лицензия» в пространстве имен «http://schemas.microsoft.com/developer/vsx-». схема/2011». Ожидаемый список возможных элементов: «PreviewImage, Tags, Preview, Version» в пространстве имен «http://schemas.microsoft.com/developer/vsx-schema/2011», а также любой элемент в пространстве имен «##other».

Я попытался обновить пакет Microsoft.VSSDK.BuildTools (в настоящее время установлен 17.10.2185, пытался обновиться до последней доступной версии - 17.11.414), но обнаружил ошибку от nuget:

Невозможно найти пакет Microsoft.VisualStudio.SDK.Analyzers с версией (>= 17.7.41).

  • На nuget.org найдено 28 версий [Ближайшая версия: 17.7.32]

Что касается значка - я дважды проверил, файл значка появляется в каталоге bin/release с правильным именем, по какой-то причине это действительный бот в формате png. Я не могу отобразить его в установленном меню расширений Visual Studio. вкладка.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы добавили тег <License> в VSIX Manifest Designer?

Если файл не содержит допустимого XML, конструктор манифеста не откроется. Проверьте, пожалуйста, сможете ли вы открыть конструктор после добавления <License>.

Невозможно найти пакет Microsoft.VisualStudio.SDK.Analyzers с версией (>= 17.7.41).

Я могу воспроизвести ту же ошибку, когда обновляю пакет Microsoft.VSSDK.BuildTools до 17.11.414.

Когда я проверил зависимости пакета на веб-сайтах Nuget, он заметил, что Microsoft.VSSDK.BuildTools зависит от Microsoft.VisualStudio.SDK.Analyzers (>= 17.7.41). Однако последняя версия Microsoft.VisualStudio.SDK.Analyzers — 17.7.32. Это может вызвать ошибку NU1102: невозможно найти packageg xxx.

Я предлагаю вам нажать «Пакет отчета» на сайте nuget org.

Однако, судя по моему тесту, когда я создаю проект VSIX, кажется, что сборка игнорирует ошибку пакета nuget и отображает успех.

Когда я проверил папку «bin/release», там появились файл значка и файл лицензии. После упаковки расширения перейдите в меню «Инструменты» и нажмите «Расширения и обновления». Расширение TestPublish отображается на центральной панели со значком.

Надеюсь, это поможет вам.

Обновление Зохара:

После нашего разговора в комментариях я добавил в свое решение новый проект, используя шаблон Empty VSIX Project, где можно было использовать конструктор vsixManifest. Затем я отредактировал vsixmanifest в этом проекте, указав соответствующие детали, и удалил проект, содержащий старый vsixManifest.

Это решило проблему для меня.

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

Zohar Peled 11.07.2024 07:38

Ну, это все равно не помогло. Когда я создаю новый проект с использованием шаблона рефакторинга кода (стандарт .Net), файл vsixmanifest открывается только как XML-файл, а не в конструкторе. Однако когда я создаю новый проект с использованием шаблона проекта Empty VSIX, дизайнер открывается. Я не знаю, что я делаю здесь не так.

Zohar Peled 11.07.2024 08:09

Я могу воспроизвести ту же проблему на своей стороне. Судя по файлу .csproj, один из них представляет собой проект SDK, а другой — проект .net framework. Как [Тина ](Developercommunity.visualstudio.com/t/…, «это известная проблема, что дизайнер манифеста VSIX не работает с проектами в стиле SDK». Это может быть причиной того, что файл vsixmanifest ведет себя по-другому.

Dou Xu-MSFT 11.07.2024 10:21

Скопируйте файл vsixmanifest в проекте рефакторинга кода в файл vsixmanifest в проекте Empty VSIX, а затем откройте его в конструкторе, чтобы проверить наличие недопустимого XML. Можете ли вы открыть его с помощью дизайнера?

Dou Xu-MSFT 11.07.2024 10:26

Я попробую и дам вам знать. Тем временем я создал POC, идя наоборот - создал новое решение с тремя проектами - два из стандартного шаблона .net и один из пустого шаблона vsix, а затем просто добавил проект кода в качестве ресурса mef в пустой vsix и удалил тот, который был в комплекте с шаблоном. Кажется, это работает, поскольку код работает, и я могу использовать дизайнер, но я хотел бы также попробовать предложенное вами решение.

Zohar Peled 11.07.2024 10:39

Что ж, это работает с POC — один и тот же файл манифеста открывается в одном проекте как XML, а в другом — в дизайнере — так что большое спасибо за это! Теперь я попробовал добавить значок и лицензию в POC, и, похоже, все работает нормально. Спасибо за вашу помощь! Кстати, если вы позволите, я отредактирую ваш ответ, включив в него свое решение, и приму его.

Zohar Peled 11.07.2024 11:48

Рад слышать, что вы нашли решение. Пожалуйста, не стесняйтесь изменять ответ, чтобы сделать его полным.😊

Dou Xu-MSFT 12.07.2024 04:05

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

Создание OptionsProvider в отдельном проекте/библиотеке для проекта VSIX в расширении Visual Studio
Расширение Visual Studio с использованием внешней библиотеки выдает «Не удалось загрузить файл или сборку» во время выполнения
Расширение Visual Studio не работает в экспериментальном экземпляре VS2022
Как я могу создать студию шаблонов, чтобы разместить мои классы и будущее, как Microsoft Template Studio
Как изменить папку установки расширения по умолчанию для Visual Studio 2022?
Как установить и получить аргументы для пользовательской команды проекта Visual Studio
Измените несколько классов на частичные классы в Visual Studio
Консоль инструментов разработчика Chrome (или любой другой) не отображает «выходные данные» Javascript (console.info) с использованием VS Code
Обнаружить определенное слово или шаблон в файлах исходного кода в Visual Studio?
Катастрофический сбой при загрузке расширения в экспериментальном экземпляре VS2022 после обновления до версии 17.7