web-dev-qa-db-fra.com

Comment utiliser Microsoft.Net.Compilers au niveau de la solution?

Je souhaite commencer à utiliser Microsoft.Net.Compilers pour simplifier le travail avec notre serveur de génération. Cependant, je ne pouvais le faire fonctionner qu'au niveau par projet , en ajoutant le package à tous les projets.
Ceci est problématique car le paquet devrait être ajouté à chaque nouveau projet créé. Cela peut conduire à un cas où le code est compilé sur la machine du développeur (qui possède le dernier compilateur) mais échouant sur le serveur de génération. Nous avons de nombreux projets (plus de 100), ce qui est relativement courant.

Existe-t-il un moyen d'utiliser Microsoft.Net.Compilers au niveau de la solution?

S'il n'y a pas de moyen pris en charge, existe-t-il un outil de ligne de commande que je n'aurais pas à installer sur le serveur de génération? Sinon, n'est-ce pas une utilisation prévue de ces outils?

15
Kobi

Si dans VS 2017 (mise à jour 1, numéros de construction> = 15.1. *), Vous pouvez utiliser le mécanisme MSvu intégré PackageReference au lieu de packages.config qui n'était auparavant disponible que pour les types de projet standard .net core et .net. Reportez-vous à la documentation de PackageReference ainsi qu'à la publication de blog de NuGet annonçant le support, en particulier la section "Qu'en est-il des autres types de projets qui ne sont pas .NET Core?".

L'idée est de passer de l'installation d'un package à l'ajout de packages.config pour la restauration, en spécifiant simplement un élément MSBuild dans le fichier csproj. Cela peut être configuré pour les nouveaux projets dans VS: Switch from packages.config to ProjectReference (l'animation provient du billet de blog de NuGet lié ci-dessus)

Une nouvelle fonctionnalité de MSBuild 15 est qu'il prend en charge automatiquement l'inclusion de fichiers dans la hiérarchie des répertoires ayant des noms spéciaux. Ce sont Directory.Build.props et Directory.Build.targets qui seront inclus avant (props) et après (cibles) le contenu de votre fichier de projet (il existe un bogue avec la version .targets pour les projets à ciblage multiple pour lesquels un correctif est sur le point d'être publié).

Si vous créez un fichier Directory.Build.props avec le contenu suivant au niveau de la solution, tous les projets de la hiérarchie de répertoires située en dessous hériteront de son contenu et vous pourrez imposer une dépendance NuGet à chaque projet:

<Project>
  <ItemGroup>
    <PackageReference Include="Microsoft.Net.Compilers" Version="2.1.0"/>
  </ItemGroup>
</Project>
15
Martin Ullrich

Pour les projets existants dans la solution:

Cliquez avec le bouton droit sur votre solution> Gérer les packages NuGet pour la solution ...

... Ou:

Outils> Gestionnaire de packages de bibliothèque> Gérer les packages NuGet pour la solution ...

Ajoutez-le ensuite à tous les projets en recherchant votre paquet, puis en cochant la case en haut, puis en cliquant sur installer.

Source: https://stackoverflow.com/a/8653312/7007466


Pour les nouveaux projets:

Créez un modèle imitant celui d'origine pour chaque type de projet dont vous avez besoin (Console, Bibliothèque, etc.) et en y ajoutant le package.

  • Créer un projet .

    Remarque: Utilisez uniquement des caractères d'identification valides lorsque vous nommez un projet qui sera la source d'un modèle. Un modèle exporté à partir d'un projet portant des caractères non valides peut entraîner des erreurs de compilation dans les projets futurs basés sur le modèle. 

  • Modifiez le projet jusqu'à ce qu'il soit prêt à être exporté en tant que modèle.
  • Selon le cas, éditez les fichiers de code pour indiquer où le remplacement de paramètre doit avoir lieu. 
  • Dans le menu Fichier, cliquez sur Exporter un modèle. L'assistant d'exportation de modèle s'ouvre.
  • Cliquez sur Modèle de projet.
  • Si vous avez plusieurs projets dans votre solution actuelle, sélectionnez les projets que vous souhaitez exporter vers un modèle.
  • Cliquez sur Suivant.
  • Sélectionnez une icône et une image d'aperçu pour votre modèle. Ceux-ci apparaîtront dans la boîte de dialogue Nouveau projet.
  • Entrez un nom de modèle et une description.
  • Cliquez sur Terminer. Votre projet est exporté dans un fichier .Zip, placé dans l'emplacement de sortie spécifié et, s'il est sélectionné, importé dans Visual Studio.

Si le Kit de développement logiciel Visual Studio est installé, vous pouvez envelopper le modèle final dans un fichier .vsix pour le déploiement à l'aide du modèle de projet VSIX.

Source: https://msdn.Microsoft.com/en-us/library/xkh1wxd8.aspx

Si quelqu'un a un moyen plus facile que de créer des modèles, je le prendrai avec plaisir.

1
satibel