En TargetFramework
est utilisé par NuGet pour résoudre les dépendances et déterminer les actifs à utiliser pour compiler et construire l'application. (Dans les coulisses, quelques autres propriétés telles que TargetFrameworkMoniker
et TargetFrameworkVersion
entrent en jeu, mais le SDK les abstrait en les simplifiant. TargetFramework
pour les cadres qu'il connaît).
En RuntimeFrameworkVersion
est spécifique à .NET Core / netcoreapp
. Le SDK injectera une dépendance sur Microsoft.NETCore.App
pour la version que RuntimeFrameworkVersion
est réglé sur ou utiliser la dernière version connue de .NET Core < 2.0. La version résolue est ensuite écrite dans le fichier runtimeconfig.json
pour que le résolveur du cadre hôte .NET Core détermine la version du cadre partagé à charger (=> le runtime .NET Core 1.1.4 par exemple).
La raison pour laquelle vous êtes en mesure d'utiliser 1.1.*
pour netcoreapp1.0
C'est parce que le paquet NuGet contient effectivement les actifs nécessaires pour construire des applications .NET Core 1.0.*. Cependant, l'outil ne le sait pas et vous obtiendrez une application .NET Core 1.0 mais elle sera chargée par le framework 1.1 car c'est ce qui se trouve dans le paquet NuGet. runtimeconfig.json
fichier.
La différence importante est :
- Il importe seulement pour les exécutables autonomes de savoir quelle version de
Microsoft.NETCore.App
est utilisé.
- Ce paquet fournira le cadre complet avec la version souhaitée lors de l'exécution d'une publication autonome (par ex.
dotnet publish -r win7-x64
)
- Lorsque vous exécutez une application construite pour
1.0.3
mais vous avez le 1.0.5
installé, le 1.0.5
sera utilisé automatiquement.
- Si vous ne définissez pas
RuntimeFrameworkVersion
et qu'une nouvelle version du SDK est publiée et qu'elle connaît les nouvelles versions de correction de .NET Core, elle utilisera automatiquement la dernière version. Si vous définissez la version explicitement, vous risquez de ne pas être à jour sans modifier le fichier du projet.
- En
RuntimeFrameworkVersion
est également le temps d'exécution minimum que l'application chargera - si vous le fixez à 1.0.4
et essayez de l'exécuter sur une machine qui ne dispose que de 1.0.3
installé, l'application ne démarrera pas à moins que vous ne modifiiez le fichier runtimeconfig.json
fichier.
-
RuntimeFrameworkVersion
peut être défini sur une version flottante, ce qui est utile pour cibler les versions de prévisualisation ou les builds quotidiens, par ex. 2.1.0-preview1-*
se résoudrait au plus récent preview1
version disponible sur les flux NuGet configurés.
En dehors de cela, il n'y a que quelques raisons de construire en utilisant une version supérieure de Microsoft.NETCore.App
comme une correction de bogue de construction pour le DiaSymReader
composant.
Dans la version 2.0 de .NET Core, la version de RuntimeFrameworkVersion
sera toujours 2.0.0
pour les "applications portables" (non autonomes), car l'implémentation du cadre n'est plus assurée par les dépendances de l'application Microsoft.NETCore.App
et ce paquet NuGet est uniquement utilisé pour fournir des assemblages de référence pour la compilation.