Après avoir fait quelques recherches supplémentaires entre VS 2017 et 2019 (Communauté), j'ai réussi à résoudre ce problème ! L'homme oh l'homme nous avons besoin de quelques docs sur ce sujet parce que cela a senti comme un doozy !
J'ai pu utiliser le pack ASP.NET Core Template comme élément de base pour mettre en place quelque chose. Pour ceux qui ne le savent pas, les extensions sont conçues pour ajouter des modèles à Visual Studio à l'aide de .nupkg
fichier(s) intégré(s) dans l'extension. L'utilisation de l'extension .nupkg
est similaire à la façon dont dotnet new
fonctionne avec des modèles personnalisés . J'ai un prototype fonctionnel sur GitHub qui soutient les deux Visual Studio 2017 et 2019.
Maintenant, si vous êtes comme moi, vous pouvez regarder soit madskristensens soit mon projet et vous demander "Comment diable cela fonctionne-t-il ?". Bonne question ! Voici les détails que j'ai le temps de remplir en ce moment :
- Créez un (ou plusieurs) modèle(s) personnalisé(s) et placez-le(s) dans le dossier de l'utilisateur.
*.nupkg
fichier(s)
- Dans mon échantillon, mon
SampleTemplates
contient trois modèles de projet différents. Je génère le .nupkg
con dotnet pack
- A
vs-2017.3.host.json
est nécessaire dans le fichier .template.config/
afin que l'assistant d'application Web ASP.NET puisse afficher le modèle.
- Au moins une ou plusieurs autres conditions doivent être remplies pour être affichées dans l'assistant d'application Web ASP.NET, mais je ne les ai pas encore déterminées, car l'ajout du fichier à un modèle d'application de console ne le fait pas apparaître. Je veux essayer de résoudre ce problème, mais j'aimerais avoir de l'aide si quelqu'un le sait déjà !
- En
template.json
a besoin d'un Symbole du cadre pour définir la liste des cibles du framework .NET Core qui sont prises en charge par le modèle.
- En faisant quelques tests, il ne semble pas que la
Framework
n'a pas été remplacé par le symbole .csproj
C'est la raison pour laquelle mon exemple comprend également un TargetFrameworkOverride
symbole que le Framework
remplace le symbole.
- Placez le
.nupkg
dans le fichier Racine d'un projet d'extension VSIX et assurez-vous de mettre le drapeau "Inclure dans VSIX" sur True
. J'insiste sur Root car à l'origine, le paquet NuGet atterrissait dans un fichier build\
dans mon extension et mes modèles n'étaient pas récupérés.
J'essaierai de rédiger un fichier README dans mon projet d'exemple afin de fournir un meilleur aperçu de tous les détails nécessaires pour y parvenir. Je croise les doigts pour que cela aide quelqu'un (ou au moins pour que cela m'aide à l'avenir, lorsque j'oublierai inévitablement comment j'ai accompli cela) !
Mise à jour
Depuis le 2 septembre 2020, l'équipe de Visual Studio a publié une fonctionnalité expérimentale pour inclure les éléments suivants dotnet new
dans Visual Studio. J'ai effectué quelques essais exceptionnellement minimes avec ce système, et il semble fonctionner, mais il n'est pas parfait. Par exemple, j'ai créé un dotnet new
modèle qui soutient de multiples .csproj
et .sln
et le résultat ne correspondait pas tout à fait à ma solution.
Voici l'article du blog de Visual Studio décrivant l'annonce : https://devblogs.microsoft.com/dotnet/net-cli-templates-in-visual-studio/