Я только что опубликовал свое первое расширение 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. вкладка.





Вы добавили тег <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.
Это решило проблему для меня.
Ну, это все равно не помогло. Когда я создаю новый проект с использованием шаблона рефакторинга кода (стандарт .Net), файл vsixmanifest открывается только как XML-файл, а не в конструкторе. Однако когда я создаю новый проект с использованием шаблона проекта Empty VSIX, дизайнер открывается. Я не знаю, что я делаю здесь не так.
Я могу воспроизвести ту же проблему на своей стороне. Судя по файлу .csproj, один из них представляет собой проект SDK, а другой — проект .net framework. Как [Тина ](Developercommunity.visualstudio.com/t/…, «это известная проблема, что дизайнер манифеста VSIX не работает с проектами в стиле SDK». Это может быть причиной того, что файл vsixmanifest ведет себя по-другому.
Скопируйте файл vsixmanifest в проекте рефакторинга кода в файл vsixmanifest в проекте Empty VSIX, а затем откройте его в конструкторе, чтобы проверить наличие недопустимого XML. Можете ли вы открыть его с помощью дизайнера?
Я попробую и дам вам знать. Тем временем я создал POC, идя наоборот - создал новое решение с тремя проектами - два из стандартного шаблона .net и один из пустого шаблона vsix, а затем просто добавил проект кода в качестве ресурса mef в пустой vsix и удалил тот, который был в комплекте с шаблоном. Кажется, это работает, поскольку код работает, и я могу использовать дизайнер, но я хотел бы также попробовать предложенное вами решение.
Что ж, это работает с POC — один и тот же файл манифеста открывается в одном проекте как XML, а в другом — в дизайнере — так что большое спасибо за это! Теперь я попробовал добавить значок и лицензию в POC, и, похоже, все работает нормально. Спасибо за вашу помощь! Кстати, если вы позволите, я отредактирую ваш ответ, включив в него свое решение, и приму его.
Рад слышать, что вы нашли решение. Пожалуйста, не стесняйтесь изменять ответ, чтобы сделать его полным.😊
Спасибо за ответ, у меня действительно дизайнер не открывается, однако в самом xml я не нашел никаких проблем. Я попробую с помощью дизайнера сгенерировать манифест нового проекта и скопировать его содержимое в свой текущий проект. Надеюсь, это решит проблему.