VS 2017 référence les projets locaux par chemin de fichier (comme avec global.json dans VS 2015)

Dans VS 2015, nous pouvions spécifier un chemin local dans global.json comme suit:

{ “projects”: [ “src”, “test”, “C:\\path\\to\\other\\projects” ] } 

Il appendait ensuite tous les projets de ce chemin à la solution actuelle, ce qui nous permettrait de les référencer facilement à partir de projets existants.

Maintenant que VS 2017 a changé son modèle pour utiliser csproj et se débarrasser de project.json et de global.json, est-ce que quelqu’un sait comment y parvenir?

Le mieux que j’ai obtenu est d’inclure manuellement les autres projets, un par un, dans la solution. Ensuite, dans tous les projets existants qui doivent y faire référence, je devrais modifier leur csproj pour les inclure. Ceci est vraiment fastidieux par rapport à la méthode précédente consistant simplement à inclure un chemin de fichier dans un emplacement.

Merci pour toute aide concernant ceci.

Bon les gars, nous sums en mai et nous n’avons toujours pas de solution officielle de Microsoft. Quelque chose fonctionne avec Powershell et la nouvelle interface de ligne de commande .NET. Il existe déjà des commandes intégrées dans dotnet.exe pour append / supprimer des solutions à un projet, alors voici ce que j’ai proposé.

Includes.json

 { "Includes": [ "C:\\projects\\SomeProjectA\\src", "C:\\git\\SomeProjectB\\src" ] } 

Add-Includes.ps1

 echo "Beginning import of projects in Includes.json" $JsonIncludes = (Get-Content -Raw -Path "Includes.json") | ConvertFrom-Json $IncludePaths = $JsonIncludes.Includes; foreach ($IncludePath in $IncludePaths) { $ProjectFiles = Get-ChildItem ($IncludePath + "\*") ` -Include *.csproj ` -Recurse ` | % {$_.FullName } foreach ($ProjectFile in $ProjectFiles) { dotnet sln add $ProjectFile } } 

Supprimer-Inclus.ps1

 echo "Beginning removal of projects in Includes.json" $JsonIncludes = (Get-Content -Raw -Path "Includes.json") | ConvertFrom-Json $IncludePaths = $JsonIncludes.Includes; foreach ($IncludePath in $IncludePaths) { $ProjectFiles = Get-ChildItem ($IncludePath + "\*") ` -Include *.csproj ` -Recurse ` | % {$_.FullName } foreach ($ProjectFile in $ProjectFiles) { dotnet sln remove $ProjectFile } } 

Cela représente quelques étapes supplémentaires par rapport à l’utilisation de l’ancien fichier Global.json, mais c’est ce que nous avons besoin. Pour que ce soit vraiment pratique, ajoutez un dossier de solution et incluez le fichier Includes.json pour pouvoir le modifier facilement à partir de Visual Studio.

Quelques notes:

  • Les scripts Add / Remove sont presque identiques, la seule différence est la commande dotnet sln add / remove. Cela peut probablement être nettoyé dans un script interactif.
  • Vous pouvez également modifier certaines choses pour qu’au lieu de créer un script séparé d’ajout / suppression, vous lisiez simplement le fichier Includes.json et le compariez aux projets actuellement dans la solution en analysant le fichier .sln.

Juste matière à reflection. Voici le repository si vous voulez cloner / télécharger: https://github.com/rushfive/VS2017-Includes