web-dev-qa-db-fra.com

Comment mettre à niveau les fichiers csproj avec VS2017

VS2017 a jusqu'à présent correctement converti plusieurs projets basés sur project.json/.xproj Au nouveau format .csproj.

Je voudrais également utiliser le nouveau format .csproj Avec les anciens projets .csproj Qui ciblaient auparavant uniquement .NET Framework (c'est-à-dire qu'ils ne fonctionnaient pas avec dnx/dotnet CLI).

Il semble que même si un projet ne ciblait toujours que .NET Framework, les avantages de <PackageReference> Et d'un fichier .csproj Facilement modifiable semblent valoir la peine (espérons-le, pas trop importants).

Est-ce possible de faire directement avec Visual Studio 2017?

Sinon, quelles étapes manuelles seraient nécessaires?

30
Drew Noakes

J'édite ma réponse pour préciser que vous n'avez pas besoin de mettre à jour votre .csproj fichier. Comme Drew l'a commenté ci-dessous, cela présente des avantages. Cependant, VS2017 continuera de fonctionner correctement avec le fichier csproj classique. De plus, rien dans VS2017 n'effectuera la mise à niveau pour vous. Si vous souhaitez profiter du nouveau format, la procédure ci-dessous devrait vous aider.

Mise à niveau du .csproj Le fichier au nouveau format Visual Studio 2017 est facile pour les bibliothèques de classes simples ou les projets de console.

Si vous n'utilisez pas le contrôle de version, avant de commencer, assurez-vous de sauvegarder votre fichier csproj et les deux Properties/AssemblyInfo.cs, et packages.config. Le nouveau fichier csproj est génial. Dans de nombreux projets, j'ai remplacé des centaines de lignes de code par une douzaine. Cependant, comme Visual Studio 2017 continue de prendre en charge les fichiers csproj précédents, cela peut être un cas d'optimisation prématurée. Si vous avez une solution qui contient des dizaines de projets, de nombreux packages NuGet et toute personnalisation de csproj, vous entreprenez probablement un projet de travail inutile.

Remplacez tout le contenu de votre fichier .csproj par le code approprié comme suit.

Bibliothèque de classes

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net462</TargetFramework>
  </PropertyGroup>
</Project>

Application console

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net462</TargetFramework>
  </PropertyGroup>
</Project>

Changer la <TargetFramework>attribuer à la version .NET dont vous avez besoin, telle que net452, net46, net461 etc.

Par défaut, tout le code dans votre dossier de projet sera récupéré par le compilateur. Si vous avez du code en dehors de votre dossier de projet, vous devez le référencer explicitement de la même manière que dans les versions précédentes de Visual Studio et csproj.

Après avoir effectué les modifications ci-dessus, chargez votre solution dans Visual Studio 2017. À ce stade, les projets les plus élémentaires doivent être créés. Sinon, vous devrez probablement ajouter des références d'assemblage ou de projet manquantes. L'ajout de références est très similaire à cela dans les versions précédentes de Visual Studio. Sélectionnez votre projet dans l'Explorateur de solutions, cliquez avec le bouton droit sur Dependencies et sélectionnez Add Reference. Ajoutez les références Framework ou Project qui vous manquent.

Essayez de recréer votre solution/projet. Vous pouvez recevoir des erreurs concernant les attributs en double. Cette erreur est due au fait que les attributs précédemment définis dans AssemblyInfo.cs ont été déplacés vers le fichier csproj. Suppression du AssemblyInfo.cs, situé sous le dossier Propriétés, devrait résoudre ces erreurs. Avant de supprimer le AssemblyInfo.cs vous devez déplacer toutes les données que vous avez définies. La plupart des attributs peuvent être saisis dans la section d'informations sur le package de votre fichier de projet. Cliquez avec le bouton droit sur le nom de votre projet, sélectionnez la page Package et saisissez les données précédemment définies dans votre AssemblyInfo.cs fichier. Cela inclut des éléments tels que la version de l'assemblage, l'auteur, le droit d'auteur, etc.

Ci-dessous, une capture d'écran qui montre l'étape précédente.

enter image description here

Si vous utilisez des packages NuGet dans votre projet, vous devez également les déplacer vers le nouveau format. Avant Visual Studio 2017, NuGet s'appuyait sur un fichier nommé Packages.config à la racine de votre projet en plus des références dans csproj. Pour migrer vos références de package NuGet, cliquez avec le bouton droit sur votre solution et chargez le gestionnaire de packages Nuget. Une fois chargé dans le coin supérieur droit, cliquez sur le rouage et les options du gestionnaire de packages NuGet se chargeront. Sélectionnez General. Sous Gestion des packages, modifiez l'option Default package management format à PackageReference. À ce stade, vous devrez ajouter manuellement tous vos packages NuGet à votre solution. Vous pouvez trouver tous les packages dans le packages.config fichier dans le dossier racine du projet. Une fois tous les packages ajoutés, vous pouvez supprimer le packages.config fichier.

32
Mark

J'ai créé un outil pour cela qui fonctionne avec les fichiers csproj: https://github.com/hvanbakel/CsprojToVs2017

Vous pouvez simplement l'exécuter sur un csproj et il convertira le fichier et créera une sauvegarde de l'ancien.

18
thekip

Mise à jour: Le lien de l'outil ci-dessous est mort, mais à partir de VS2017 15.7, cette fonctionnalité est intégrée à Visual Studio .

Remarque: Cela ne met à jour que le mécanisme de référence NuGet. Il ne change pas pour le nouveau type csproj.


Il existe un outil incroyable qui convertit automatiquement les projets qui utilisent packages.config ou project.json en PackageReference.

https://marketplace.visualstudio.com/items?itemName=TaylorSouthwickMSFT.NuGetPackagetoProjectjsonConverter

  1. Installez-le sur votre Visual Studio et faites un clic droit sur la solution

  2. Après avoir installé l'extension, ouvrez votre solution et cliquez avec le bouton droit sur la solution dans l'Explorateur de solutions et cliquez sur Mettre à niveau vers les références de package

  3. Après avoir sélectionné cela, le projet sera transformé comme indiqué ci-dessous. Il est fortement recommandé d'effectuer cette opération sur un répertoire activé par le contrôle de code source afin de pouvoir facilement annuler en cas de problème.

enter image description here

2
Alper Ebicoglu