Remarque
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
Comportement précédent
Auparavant, lorsqu’il DllImportSearchPath.AssemblyDirectory était spécifié comme seul indicateur de recherche, le runtime a d’abord recherché le répertoire d’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.
Par exemple, avec le code suivant, le runtime recherche le répertoire d’assembly, puis revient aux chemins de recherche du système d’exploitation.
[DllImport("example.dll", DllImportSearchPath = DllImportSearchPath.AssemblyDirectory)]
public static extern void ExampleMethod();
Nouveau comportement
À compter de .NET 10, 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 recherche désormais uniquement le répertoire d’assembly pour example.dll. Si la bibliothèque est introuvable, une exception DllNotFoundException est levé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();
API affectées
- P/Invokes utilisant DefaultDllImportSearchPathsAttribute
- System.Runtime.InteropServices.NativeLibrary.Load
- System.Runtime.InteropServices.NativeLibrary.TryLoad