Résoudre les erreurs de ciblage de .NET Framework
S’applique à : Visual Studio
Cette rubrique décrit les erreurs MSBuild qui peuvent se produire en raison de problèmes de référence et de la façon dont vous pouvez résoudre ces erreurs.
Référencer un projet ou un assembly qui cible une autre version de .NET
Vous pouvez créer des applications qui référencent des projets ou des assemblys ciblant différentes versions de .NET. Par exemple, vous pouvez créer une application qui cible .NET 6, mais référence un assembly qui cible .NET Core 3.1. Toutefois, vous ne pouvez pas définir de référence dans un projet qui cible une version antérieure de .NET sur un projet ou un assembly qui cible .NET 6. Voici un exemple de l’erreur que vous pouvez voir dans ce cas :
error NU1201: Project ClassLibrary-NET6 is not compatible with netcoreapp3.1 (.NETCoreApp,Version=v3.1). Project ClassLibrary-NET6 supports: net6.0 (.NETCoreApp,Version=v6.0)
2>Done building project "ClassLibrary-NET31.csproj" -- FAILED.
Pour résoudre l’erreur, assurez-vous que votre application cible une version .NET compatible avec la version ciblée par les projets ou assemblys référencés par votre application.
Ré-cibler un projet vers une autre version de .NET
Si vous modifiez la version cible de .NET pour votre application, Visual Studio modifie certaines des références, mais vous devrez peut-être mettre à jour certaines références manuellement. Par exemple, l’une des erreurs mentionnées précédemment peut se produire si vous modifiez une application pour cibler .NET Core 3.1 et que cette application a des références, des ressources ou des paramètres qui s’appuient sur .NET 6.
Mettre à jour les références dans app.config
Pour contourner les paramètres d’application dans les applications .NET Framework, procédez comme suit :
- Ouvrez l'Explorateur de solutions.
- Sélectionnez Afficher tous les fichiers, puis modifiez le fichier app.config dans l’éditeur XML de Visual Studio.
- Modifiez la version dans les paramètres pour qu’elle corresponde à la version appropriée de .NET. Par exemple, vous pouvez remplacer le paramètre de version 4.0.0.0 par 2.0.0.0.
De même, pour une application qui a ajouté des ressources, procédez comme suit :
- Ouvrez l'Explorateur de solutions.
- Sélectionnez Afficher tous les fichiers.
- Développez My Project (Visual Basic) ou Properties (C#), puis modifiez le fichier Resources.resx dans l’éditeur XML de Visual Studio.
- Remplacez le paramètre de version 4.0.0.0 par 2.0.0.0.
Mettez à jour les ressources
Si votre application dispose de ressources telles que des icônes ou des bitmaps ou des paramètres tels que des chaîne de connexion de données, vous pouvez également résoudre l’erreur en supprimant tous les éléments de la page Paramètres du Concepteur de projets, puis en lisant les paramètres requis.
Vous re-ciblez un projet vers une autre version de .NET et les références ne sont pas résolues
Si vous ciblez à nouveau un projet vers une autre version de .NET, vos références peuvent ne pas être résolues correctement dans certains cas. Les références complètes explicites aux assemblys provoquent souvent ce problème, mais vous pouvez la résoudre en supprimant les références qui ne sont pas résolues, puis en les ajoutant au projet. Vous pouvez également modifier le fichier projet pour remplacer les références. Tout d’abord, supprimez les références du formulaire suivant :
<Reference Include="System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL" />
Ensuite, remplacez-les par le formulaire simple :
<Reference Include="System.ServiceModel" />
Note
Après la fermeture et la ré-ouverture votre projet, vous devez également le régénérer pour vérifier que toutes les références sont correctement résolues.