Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
À compter de .NET 10, si vous spécifiez DllImportSearchPath.AssemblyDirectory comme seul indicateur de recherche, le runtime effectue des recherches exclusivement dans le répertoire d’assembly. Cette modification affecte le comportement des P/Invokes et de la NativeLibrary classe.
Version introduite
.NET 10 Preview 5
Comportement précédent
Quand DllImportSearchPath.AssemblyDirectory a été spécifié comme seul indicateur de recherche, le runtime a d’abord recherché le répertoire de l'assembly. Si la bibliothèque n’a pas été trouvée, elle est renvoyée au comportement de recherche de bibliothèque par défaut du système d’exploitation.
Exemple:
[DllImport("example.dll", DllImportSearchPath = DllImportSearchPath.AssemblyDirectory)]
public static extern void ExampleMethod();
Dans ce cas, le runtime recherche le répertoire d’assembly, puis revient aux chemins de recherche du système d’exploitation.
Nouveau comportement
Lorsqu’il DllImportSearchPath.AssemblyDirectory est spécifié comme seul indicateur de recherche, le runtime recherche uniquement dans le répertoire d’assembly. Elle ne revient pas au comportement de recherche de bibliothèque par défaut du système d’exploitation.
L’exemple de code précédent ne recherche désormais que le répertoire d’assembly pour example.dll. Si la bibliothèque est introuvable à cet endroit, une DllNotFoundException sera lancée.
Type de changement cassant
Il s’agit d’un changement comportemental.
Raison de la modification
Le comportement par défaut lors de la spécification de DllImportSearchPath.AssemblyDirectory a causé de la confusion et était incohérent avec la conception des indicateurs de recherche. Cette modification garantit la clarté et la cohérence du comportement.
Action recommandée
Si un comportement de secours est requis, évitez de spécifier explicitement DllImportSearchPath. Par défaut, lorsqu’aucun indicateur n’est spécifié, le runtime recherche le répertoire d’assembly, puis revient au comportement de recherche de bibliothèque par défaut du système d’exploitation.
Exemple:
[DllImport("example.dll")]
public static extern void ExampleMethod();