3 votes

VS 2019 Modèles de projets ASP.NET Core personnalisés

J'essaie de comprendre comment (ou même si) je peux créer un modèle de projet Visual Studio personnalisé qui s'accroche au modèle existant d'application Web ASP.NET Core disponible dans Visual Studio 2019 ?

Ce que je veux faire, c'est quelque chose de similaire à madskristensens. Pack de modèles ASP.NET Core ( Code source GitHub ). Cependant, au lieu de VS 2017, je veux le faire pour la fenêtre "New Project Dialog" remaniée de VS 2019. Imaginez donc l'ajout d'un modèle d'application web ASP.NET Core supplémentaire à l'endroit mis en évidence ci-dessous.

New Web Application Dialog

Je suis en mesure de créer de nouveaux modèles de projets (à la fois pour Visual Studio et pour dotnet new ) mais rien n'a fonctionné jusqu'à présent. Est-ce que quelqu'un a pu étendre VS 2019 de cette manière, ou est-ce que cela a été supprimé après VS 2017 ?

7voto

willwolfram18 Points 713

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 :

  1. 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
  2. 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à !
  3. 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.
  4. 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/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X