Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Als u vanaf .NET 10 opgeeft DllImportSearchPath.AssemblyDirectory als de enige zoekvlag, zoekt de runtime uitsluitend in de assemblymap. Deze wijziging is van invloed op het gedrag van P/Invokes en de NativeLibrary klasse.
Geïntroduceerde versie
.NET 10 Preview 5
Vorig gedrag
Wanneer DllImportSearchPath.AssemblyDirectory opgegeven is als de enige zoekvlag, heeft eerst de runtime de assemblymap doorzocht. Als de bibliotheek niet is gevonden, viel deze terug op het standaardzoekgedrag van het besturingssysteem.
Met de volgende code zou de runtime bijvoorbeeld zoeken in de assemblymap en vervolgens terugvallen op de zoekpaden van het besturingssysteem.
[DllImport("example.dll", DllImportSearchPath = DllImportSearchPath.AssemblyDirectory)]
public static extern void ExampleMethod();
Nieuw gedrag
Wanneer DllImportSearchPath.AssemblyDirectory wordt opgegeven als de enige zoekvlag, zoekt de runtime alleen in de assemblymap. Het maakt geen gebruik van het standaardzoekgedrag van de bibliotheek van het besturingssysteem.
In het vorige codevoorbeeld wordt nu alleen gezocht in de assemblymap naar example.dll. Als de bibliotheek daar niet wordt gevonden, wordt er een DllNotFoundException exception gegenereerd.
Type van brekende verandering
Dit is een gedragsverandering.
Reden voor wijziging
Het terugvalgedrag bij het opgeven van DllImportSearchPath.AssemblyDirectory verwarring veroorzaakte en was inconsistent met het ontwerp van zoekvlagmen. Deze wijziging zorgt voor duidelijkheid en consistentie in gedrag.
Aanbevolen actie
Als terugvalgedrag vereist is, vermijdt u het opgeven van een expliciete DllImportSearchPathwaarde. Wanneer er geen parameters zijn opgegeven, zoekt de runtime standaard in de assembly-directory en valt vervolgens terug op het standaard zoekgedrag voor bibliotheken van het besturingssysteem.
Voorbeeld:
[DllImport("example.dll")]
public static extern void ExampleMethod();
Betreffende API's
- P/Aanroepen met behulp van DefaultDllImportSearchPathsAttribute
- System.Runtime.InteropServices.NativeLibrary.Load
- System.Runtime.InteropServices.NativeLibrary.TryLoad