Le SDK .NET actuel ne prend pas en charge le ciblage de l'erreur .NET Standard 2.0 dans la mise à jour 15.3 de Visual Studio 2017

119

Je souhaite créer un projet de bibliothèque de classes avec Target Framework .NET Standard 2.0.

J'ai mis Visual Studio 2017à jour ma version 15.3et également dans le programme d'installation de Visual Studio vérifié .NET Framework 4.7 SDKet .NET Framework 4.7 targeting packmanuellement et les ai installés.

Il n'y a toujours aucune .NET Standard 2.0option dans la zone de liste déroulante Target Framework dans la fenêtre Projet / Application. J'ai donc changé la balise TargetFramework dans le .csprojfichier manuellement en netstandard2.0, mais après avoir essayé de construire, j'obtiens cette erreur:

Le SDK .NET actuel ne prend pas en charge le ciblage .NET Standard 2.0. Ciblez .NET Standard 1.6 ou version antérieure, ou utilisez une version du SDK .NET qui prend en charge .NET Standard 2.0.

sahar
la source
4
Avez-vous un global.jsonfichier épinglant votre SDK .NET Core à 1.x? Avez-vous installé le SDK .NET Core 2.0 séparément? (Je m'attendrais à ce qu'il soit inclus avec VS, mais cela ne ferait pas de mal de l'installer de toute façon.)
Jon Skeet
1
@JonSkeet l'installation du SDK .NET Core 2.0 a fonctionné séparément. Ce sera bien si vous ajoutez votre suggestion comme réponse ici.
sahar

Réponses:

144

Il semble que l'installation de la mise à jour VS2017 pour cette version spécifique n'installe pas également le SDK .NET Core 2.0. Vous pouvez le télécharger ici .

Pour vérifier quelle version du SDK vous avez déjà installée, exécutez

dotnet --info

à partir de la ligne de commande. Notez que s'il existe un global.jsonfichier dans votre répertoire de travail actuel ou dans un répertoire d'ancêtres, cela remplacera la version du SDK exécutée. (C'est utile si vous souhaitez appliquer une version particulière pour un projet, par exemple.)

A en juger par les commentaires, certaines versions de mises à jour VS2017 faire installer le .NET SDK de base. Je soupçonne que cela peut varier quelque peu avec le temps.

Jon Skeet
la source
1
@Marwie: Pour cibler netstandard2.0, je suppose que vous le faites. Je n'ai pas essayé de cibler cela avec le SDK 1.0, mais je ne serais pas surpris si cela échouait. Vous pouvez toujours cibler netstandard1.X avec le SDK 1.0 bien sûr.
Jon Skeet
6
Ok - je suis nouveau sur le sujet - j'ai été surpris par la relation étroite entre .net core et .net standard - n'était-ce pas la raison pour laquelle créer le standard .net pour omettre de telles dépendances? Pourquoi ne serait-il pas expédié dans un colis séparé?
Marwie
1
@Marwie: Eh bien, le SDK .NET Core est distinct du .NET Core Runtime, qui est distinct du .NET Standard. Mais le SDK "connaît" un ensemble de frameworks cibles, et je ne suis pas surpris qu'il ne fonctionnera pas avec un futur . C'est comme s'attendre à ce que Visual Studio 2013 compile du code C # 7. Bien qu'il soit possible que MS l'ait conçu de sorte que vous n'ayez pas besoin du SDK .NET Core 2.0 pour cibler netstandard2.0, ce serait un cas d'utilisation étrange de le vouloir de toute façon, IMO.
Jon Skeet
3
J'ai reçu l'erreur après avoir désinstallé tous les SDK .net Core 1.x. J'avais toujours Microsoft. .NET Core SDK 2.0.2, 2.0.3, 2.1.1 et 2.1.2 installés et VS 2017 5.2. Une fois, j'ai fait une installation manuelle du Microsoft actuel. .NET core SDK (2.1.3) Je pourrais à nouveau compiler mes projets. Je me demande ce que la suppression des SDK 1.x a cassé les SDK 2.x.
SOHO Developer
2
@Justin: D'accord, donc cela ressemble soit au SDK 2.1.4 n'a pas été installé correctement, soit vous avez un fichier global.json qui l'épingle à une ancienne version.
Jon Skeet
20

alors que les réponses ci-dessus n'ont pas résolu mon problème. Je l'ai finalement résolu en allant spécifiquement sur ce lien https://www.microsoft.com/net/download/visual-studio-sdks et en téléchargeant le sdk requis pour Visual Studio . C'était vraiment déroutant et je ne comprends pas pourquoi mais cela a résolu mon problème

Johnny Camby
la source
Je ne peux pas simplement voter pour cela, cela a également résolu mon problème, mais j'espère que quelqu'un clarifiera la raison de ce travail.
Beytan Kurt
Cette solution a également fonctionné pour moi. Pour moi, c'était une question d'incompatibilité avec le dernier SDK. Si vous utilisez Visual Studio 2017, vous ne pouvez pas utiliser la dernière version du SDK .NET Core.
zéro
11

Pour moi, la solution était de changer la version global.jsonpour refléter celle installée.

Comme les autres l'ont dit, la version peut être trouvée en cours d'exécution dotnet --infodans cmd

Ce:

{
  "projects": [ "src", "test" ],
  "sdk": {
    "version": "2.0.3"
  }
}

Est devenu:

{
  "projects": [ "src", "test" ],
  "sdk": {
    "version": "2.1.4"
  }
}

Vous pouvez également créer le fichier global.json en exécutant

dotnet new globaljson --sdk-version 2.1.4

à la racine du projet

lsp
la source
2
global.jsontrouver ce fichier s'il existait?
Bruno Bieri
Je pense que ms a supprimé ce fichier, vérifiez vos fichiers .sln et .csproj :)
lsp
2
Le fichier global.jsonserait à côté du fichier de solution. J'ai généralement inclus comme élément de solution dans la solution elle-même. J'ai découvert dans mes expériences que sans fermer et recharger la solution, changer la version de global.jsonpeut conduire à d'étranges erreurs de construction. Mon commentaire s'applique à VS2018, version 15.9.2, avec .NET Core SDK 2.2.100.
Manfred
À partir des documents .NET Core SDK looks for a global.json file in the current working directory ... or one of its parent directories . Donc, comme un fichier de type héritage.
StuartLC
10

Cela se produit parfois lorsque j'essaye d'ouvrir mes anciens projets, ce qui m'aide est de changer le cadre cible des projets. Aller au projet -> ProjectName Properties ... et changer le cadre cible à celui que vous avez installé. Propriétés du projet

H35am
la source
Le menu déroulant ne montre rien pour moi. Des idées?
Danny
9

Cela a fonctionné pour moi

Utiliser l' installation de Visual Studio

Sur l'onglet «Workloads», cochez «Développement multiplateforme .Net Core» et cliquez sur «Modifier»

entrez la description de l'image ici

N'oubliez pas de cocher «Outils de développement .NET Core 2.0» dans le menu de gauche.

La source

Remarque

J'ai installé Asp Net Core avant, mais n'apparaissait pas sur mon Visual Studio, juste après l'installation en utilisant l'installation de Visual Studio est apparu pour moi.

Wictor Chaves
la source
1
Vous pouvez également installer ce dont vous avez besoin à partir d'ici: dotnet.microsoft.com/download/…
user2173353
3

Lorsque j'ai mis à niveau Visual Studio vers la version 15.5.1, .Net Core SDK a été mis à niveau vers 2.X, donc cette erreur a disparu. Quand je cours dotnet --info, je vois maintenant ce qui suit:

entrez la description de l'image ici

Johnny Oshika
la source
3

Je viens de l'avoir avec 15.8.3 après avoir désinstallé certains SDK de prévisualisation .NET Core 1.x, mon application ne se compilait pas et montrait l'erreur.

Il a été corrigé en installant la dernière version x86 du SDK même si je suis sous Windows 10 x64.

Je suppose que c'est parce que VS 2017 est toujours un programme x86 et bien que les programmes fonctionnent en tant que x64, le compilateur recherchait un SDK x86 approprié

Paul Hatcher
la source
3

J'ai eu des installations de Visual Studio 2019 et 2017. J'ai essayé d'installer le SDK .NET Core 2.X pour VS2017 séparément mais sans succès.

Le problème est que le SDK .NET Core 3.0 est installé en tant que version sdk par défaut , ce que VS2017 n'aime pas.

Ma solution était de changer la version du SDK pour le projet spécifique.

  • Tout d'abord, répertoriez vos SDK installés pour trouver la version souhaitée :
$ dotnet --info

.NET Core SDK (reflecting any global.json):
 Version:   3.1.100
 Commit:    cd82f021f4

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.18362
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\3.1.100\

Host (useful for support):
  Version: 3.1.0
  Commit:  65f04fb6db

.NET Core SDKs installed:
  1.1.14 [C:\Program Files\dotnet\sdk]
  2.1.202 [C:\Program Files\dotnet\sdk]
  2.1.509 [C:\Program Files\dotnet\sdk]
  2.2.110 [C:\Program Files\dotnet\sdk]
  3.0.100 [C:\Program Files\dotnet\sdk]
  3.1.100 [C:\Program Files\dotnet\sdk]
  • Depuis votre répertoire de solutions :
$ dotnet new globaljson --sdk-version 2.2.110 --force

Maintenant, dotnetutilisera la version spécifiée du SDK pour cette solution.

Je n'ai pas trouvé de moyen de faire cela à l'échelle du système sans gâcher mes projets 3.0.

J. Doeseph
la source
Cela semble étrange que cela soit nécessaire, mais la création d'un fichier global.json (pour la version 2.1.513) a également résolu mon problème.
8128
2

En fait, pour moi, cela s'est passé de manière opposée à une autre réponse.

J'ai installé le dernier SDK .NET Core avant l'apparition du problème (3.0.0-preview2 dans mon cas) n'ayant pas la dernière version de Visual Studio (je ne sais pas si cela ferait une différence).

La solution consistait donc simplement à désinstaller ce dernier SDK .NET Core . (Ce n'est pas parfait si vous en avez besoin, vous pouvez donc envisager de mettre à niveau Visual Studio vers le dernier, mais au moins cela a résolu le problème en cours).

Agat
la source
1

Je viens de traverser ce problème. Dans mon cas, j'avais un script fonctionnel

SET devenvPath=C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\devenv.exe
"%devenvPath%" mySolution.sln /Rebuild "DebugWithUT|AnyCpu" /Out mySolution.Build.log

Aujourd'hui, j'ai commencé à avoir cette erreur exacte. Mais maintenant, je me souviens d'avoir installé VS2019 la veille. On dirait que cela a changé quelque chose pour VS2017. Je suis allé à VS2017 Update, j'ai installé la dernière version / mise à jour et je l'ai réparé.

TS
la source
0

J'ai eu le même problème et j'ai la dernière version de la version 15.7.3 de Microsoft Visual Studio Community 2017

Je viens de télécharger le dernier SDK 2.1 et plus de problème de ciblage. https://www.microsoft.com/net/download/thank-you/dotnet-sdk-2.1.301-windows-x64-installer

Informations: Microsoft Visual Studio Community 2017 version 15.7.3 VisualStudio.15.Release / 15.7.3 + 27703.2026 Microsoft .NET Framework version 4.7.03056

Version installée: Communauté

Outils C # 2.8.3-beta6-62923-07. Commit Hash: 7aafab561e449da50712e16c9e81742b8e7a2969 Composants C # utilisés dans l'IDE. En fonction de votre type de projet et de vos paramètres, une version différente du compilateur peut être utilisée.

Common Azure Tools 1.10 Fournit des services communs à utiliser par Azure Mobile Services et Microsoft Azure Tools.

Gestionnaire de package NuGet 4.6.0 Gestionnaire de package NuGet dans Visual Studio. Pour plus d'informations sur NuGet, visitez http://docs.nuget.org/ .

ProjectServicesPackage Extension 1.0 ProjectServicesPackage Visual Studio Extension Informations détaillées

ResourcePackage Extension 1.0 ResourcePackage Visual Studio Extension Informations détaillées

Visual Basic Tools 2.8.3-beta6-62923-07. Commit Hash: 7aafab561e449da50712e16c9e81742b8e7a2969 composants Visual Basic utilisés dans l'IDE. En fonction de votre type de projet et de vos paramètres, une version différente du compilateur peut être utilisée.

Visual Studio Code Debug Adapter Host Package 1.0 Couche d'interopérabilité pour l'hébergement des adaptateurs de débogage Visual Studio Code dans Visual Studio

Visual Studio Tools pour Unity 3.7.0.1 Visual Studio Tools pour Unity

islandTraderFX
la source
0

assurez-vous de télécharger le SDK x86 au lieu du seul SDK x64 pour Visual Studio.

juFo
la source
0

J'ai eu le même problème que le SDK .NET actuel ne prend pas en charge le ciblage .NET Core 3.1. Ciblez .NET Core 1.1 ou version antérieure, ou utilisez une version du .NET SDK qui prend en charge .NET Core 3.1

1) Assurez-vous que .Net core SDK est installé sur votre machine. Téléchargez .NET !

2) définissez les variables d'environnement PATH comme ci-dessous Path

Arjun Dasari
la source
0

J'ai eu ce problème en essayant de créer ma solution dans TFS. Nous utilisions la tâche "dot net publish". L'utilisation de msbuild a brisé la glace pour nous.

Potatojaisiladki
la source