Проведя дополнительное расследование между VS 2017 и 2019 (Сообщество), я смог успешно это выяснить! Чувак, нам нужны какие-то документы по этому поводу, потому что это было похоже на унылость!
Мне удалось использовать пакет базовых шаблонов ASP.NET в качестве строительного блока для сборки чего-либо. Для тех, кто не знает, расширения предназначены для добавления шаблонов в Visual Studio с использованием файлов .nupkg
, встроенных в расширение. Использование файлов .nupkg
аналогично тому, как dotnet new
работает с пользовательскими шаблонами . У меня есть рабочий прототип на GitHub , который поддерживает и Visual Studio 2017 и 2019.
Теперь, если вы похожи на меня, вы можете посмотреть либо на madskristensens, либо на мой проект и спросить: "Как, черт возьми, это работает !?" Отличный вопрос! Вот детали, которые у меня есть время, чтобы заполнить прямо сейчас:
- Создайте пользовательский шаблон (или шаблоны) и поместите их в
*.nupkg
файл (ы)
- В моем примере мой
SampleTemplates
проект содержит три разных шаблона проекта. Я генерирую .nupkg
с dotnet pack
- Файл
vs-2017.3.host.json
требуется в папке .template.config/
, чтобы мастер веб-приложений ASP.NET мог отобразить шаблон.
- Для отображения в мастере веб-приложений ASP.NET необходимо выполнить не менее 1 или более других требований, но я еще не понял, так как добавление файла в шаблон консольного приложения не вызывает его появляться. Я хочу попытаться выяснить это, хотя я хотел бы помочь, если кто-нибудь уже знает!
- Для
template.json
необходим символ Framework , чтобы определить список целей платформы .NET Core, которые поддерживаются шаблоном.
- При некотором тестировании не выглядело, как будто символ
Framework
не заменял собой .csproj
, поэтому в моем примере также есть символ TargetFrameworkOverride
, который заменяет символ Framework
.
- Поместите файл (ы)
.nupkg
в root проекта расширения VSIX и убедитесь, что для флага «Включить в VSIX» установлено значение True
. Я подчеркиваю root, потому что изначально у меня была посылка пакета NuGet в папке build\
в моем расширении, и мои шаблоны не были подобраны.
Я попытаюсь собрать README в моем примере проекта, чтобы лучше описать все детали, необходимые для достижения этой цели. Скрестив пальцы, это помогает кому-то (или, по крайней мере, выручить меня в будущем, когда я неизбежно забуду, как мне это удалось)!