web-dev-qa-db-fra.com

Comment résoudre l'erreur de génération .NET NETDSDK1061 et l'avertissement MSB3277

J'ai eu le problème, que mon AspNetCore.App-metapackage référencé une version inférieure de EntityFrameworkCore (2.1.2), qu'un paquet de fournisseur EfCore (NpgSql, référençant 2.1.3). Le résultat était l'avertissement MSB3277 ( voici la question ). Le correctif pour cela était la réponse acceptée.

Une autre réponse a indiqué que je travaillais avec un package Microsoft.AspNetCore.App inférieur (2.1.1 à cette époque) par rapport à la dernière version stable (2.1.4). Changer de paquet La version n'était pas possible (voir l'image ci-dessous).

 enter image description here

J'ai eu le même problème avec Microsoft.NETCore.App dans une classe library-project

Je n'ai même pas remarqué que j'utilisais un métapaquet plus ancien que celui disponible. Jusqu'à aujourd'hui, je vérifiais toujours si des mises à jour sont disponibles dans NuGet Package Manager. J'ai travaillé avec les modèles de projet par défaut et ai toujours installé les derniers SDK .NetCore, convaincus que cela suffit. Ce n'était pas.

Après avoir étudié ce problème, j'ai découvert que je pouvais forcer mon projet à utiliser un métapaquet .NETCore.App ou AspNetCore.App spécifique avec la console du gestionnaire de packages (Install-Package Microsoft.NETCore.App -Version 2.1.4 ou Install-Package Microsoft.AspNetCore.App -Version 2.1.4).

Après cette commande, j'ai eu une erreur de construction (NETSDK1061: The project was restored using Microsoft.NETCore.App version 2.1.4, but with current settings, version 2.1.0 would be used instead. To resolve this issue, make sure the same settings are used for restore and for subsequent operations such as build or publish.). 

4
Joshit

J'ai essayé de trouver de l'aide sur ce problème, en trouvant quelques problèmes githubiques (par exemple, celui-ci ) semblant assez similaires, mais en réalité différents . J'ai trouvé un descriptif doc , mais cela ne m'a pas vraiment aidé.

J'ai trouvé un très utile blogpost de Rick Strahl, expliquant quels paquets sont disponibles et quel est le but de chaque paquet. C'était une bonne chose à commencer.

Ceci est ma solution:

Étape 1: Exécutez Install-Package Microsoft.AspNetCore.App -Version [VersionOfYourChoice] et/ou exécutez Install-Package Microsoft.NETCore.App -Version [VersionOfYourChoice] dans la console du gestionnaire de packages.

Étape 2: Modifiez .csproj comme indiqué ci-dessous:

<PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <RuntimeFrameworkVersion>2.1.4</RuntimeFrameworkVersion>  <- add this line
    <!--<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch> --> <- alternative
</PropertyGroup>

Une dernière chose à retenir: si vous travaillez avec Win10, rendez-vous service et vérifiez le SDK/Runtimes .Net Core installé, etc. Désinstallez tous les SDK/Runtimes dont vous n'avez pas besoin (encore une fois: vérifiez le blog post de Ricks pour cela). Vous n’avez besoin que de ceux que vous ciblez actuellement dans l’un de vos projets. 

Par exemple: Si vous travaillez sur un projet .NETCore et que vous venez de suivre ces deux étapes avec les versions 2.1.4 - au moment de la rédaction, vous n'avez besoin que de Microsoft .NET Core SDK 2.1.402. Pour nettoyer un peu, j'ai désinstallé chaque SDK/Runtimes/Packages .NET Core et je viens de prendre la dernière de ici .

Remarque: j'ai suivi cet article de Jeff Atwood pour répondre à une question qui m'a pris trop de temps à résoudre. J'espère que ça aide ...

EDIT Bonne nouvelle pour .NET Core 2.2: Il vous suffit de modifier le fichier .csproj comme suit: 

<PropertyGroup>
  <TargetFramework>netcoreapp2.2</TargetFramework>
  <RuntimeFrameworkVersion>2.2.0</RuntimeFrameworkVersion>
</PropertyGroup>

Si vous utilisez AspNetCore, n'oubliez pas de mettre à jour également le métapaquet AspNetCore.App.

8
Joshit

Après avoir ajouté cette ligne au fichier .csproj, je voyais toujours ce problème.

<RuntimeFrameworkVersion>2.1.5</RuntimeFrameworkVersion>

L'ajout de l'attribut Version à la référence du package Microsoft.AspNetCore.App a résolu le problème pour moi. J'ai changé ceci:

<PackageReference Include="Microsoft.AspNetCore.App" />

pour ça:

<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.5" />

L'étape 1 de la réponse de @ Joshit le fait probablement automatiquement, mais j'avais déjà la dernière version de Microsoft.AspNetCore.App.

1
nbergqui

Ug. Ce problème était très délicat pour moi. J'ai suivi les étapes de la réponse de @ Joshit et l'erreur a persisté. Puis j'ai fait:

  • Construire> Solution propre
  • Build> Build Solution

Maintenant ça marche.

Il est utile de connaître la version de votre SDK, disponible ici: C:\Program Files\dotnet\sdk

Vous pouvez également résoudre ce problème lors de la publication. Il peut être utile d’ajouter cette ligne au fichier publish_profile.pubxml:

<TargetFramework>netcoreapp2.1</TargetFramework>
<RuntimeFrameworkVersion>2.1.0</RuntimeFrameworkVersion>

Remplacez 2.1.0 par 2.1.4 ou tout ce que vous utilisez.

0
Jess