Partager via


Restauration par progression du runtime de déploiement autonome

Les déploiements d’applications autonomes .NET Core incluent les bibliothèques .NET Core et le runtime .NET Core. À compter du SDK .NET Core 2.1 (version 2.1.300), un déploiement d’application autonome publie le runtime de correctif le plus élevé sur votre ordinateur. Par défaut, pour un déploiement autonome, dotnet publish sélectionne la dernière version installée dans le cadre du Kit de développement logiciel (SDK) sur l’ordinateur de publication. Cela permet à votre application déployée de s’exécuter avec des correctifs de sécurité (et d’autres correctifs) disponibles pendant publish. L’application doit être republiée pour obtenir un nouveau correctif. Les applications autonomes sont créées en spécifiant -r <RID> sur la dotnet publish commande ou en spécifiant l’identificateur d’exécution (RID) dans le fichier projet (csproj/vbproj) ou sur la ligne de commande.

Vue d’ensemble de l'évolution des versions des correctifs

restore, build et publish sont dotnet des commandes qui peuvent s’exécuter séparément. Le choix du runtime fait partie de l’opération restore , pas publish ou build. Si vous appelez publish, la dernière version du correctif sera choisie. Si vous appelez publish avec l’argument --no-restore , vous n’obtenez peut-être pas la version de correctif souhaitée, car une version antérieure restore n’a peut-être pas été exécutée avec la nouvelle stratégie de publication d’application autonome. Dans ce cas, une erreur de compilation se produit avec du texte similaire à ce qui suit :

« Le projet a été restauré à l’aide de Microsoft.NETCore.App version 2.0.0, mais avec les paramètres actuels, la version 2.0.6 serait utilisée à la place. Pour résoudre ce problème, vérifiez que les mêmes paramètres sont utilisés pour la restauration et pour les opérations suivantes telles que la génération ou la publication. En règle générale, ce problème peut se produire si la propriété RuntimeIdentifier est définie pendant la génération ou la publication, mais pas lors de la restauration. »

Remarque

restore et build peut être exécuté implicitement dans le cadre d’une autre commande, comme publish. Lorsqu’elles sont exécutées implicitement dans le cadre d’une autre commande, elles sont fournies avec un contexte supplémentaire afin que les artefacts appropriés soient produits. Quand vous exécutez une commande publish avec un runtime (par exemple, dotnet publish -r linux-x64), la commande restore implicite restaure les packages du runtime linux-x64. Si vous appelez restore explicitement, il ne restaure pas les packages d’exécution par défaut, car il n’a pas ce contexte.

Comment éviter la restauration pendant la publication

L’exécution restore dans le cadre de l’opération publish peut être indésirable pour votre scénario. Pour éviter restore pendant publish, tout en créant des applications autonomes, procédez comme suit :

  • Définissez la RuntimeIdentifiers propriété sur une liste séparée par des points-virgules de tous les RID à publier.
  • Attribuez à la propriété TargetLatestRuntimePatch la valeur true.

Argument No-restore avec des options dotnet publish

Si vous souhaitez créer à la fois des applications autonomes et des applications dépendantes de l’infrastructure avec le même fichier projet, et que vous souhaitez utiliser l’argument --no-restore avec dotnet publish, choisissez l’une des options suivantes :

  1. Préférez le comportement dépendant du cadre. Si l’application dépend de l’infrastructure, il s’agit du comportement par défaut. Si l’application est autonome et peut utiliser un runtime local 2.1.0 non corrigé, définissez TargetLatestRuntimePatch à false dans le fichier de projet.

  2. Préférez le comportement autonome. Si l’application est autonome, il s’agit du comportement par défaut. Si l’application dépend de l’infrastructure et nécessite l’installation du dernier correctif, défini TargetLatestRuntimePatchtrue sur le fichier projet.

  3. Prenez le contrôle explicite de la version du runtime framework en définissant RuntimeFrameworkVersion sur la version de correctif spécifique dans le fichier projet.