Condividi tramite


Specificando DllImportSearchPath.AssemblyDirectory viene effettuata solo la ricerca nella directory dell'assembly.

A partire da .NET 10, se si specifica DllImportSearchPath.AssemblyDirectory come unico flag di ricerca, il runtime cerca esclusivamente nella directory dell'assembly. Questa modifica influisce sul comportamento di P/Invokes e della NativeLibrary classe .

Versione introdotta

.NET 10

Comportamento precedente

In precedenza, quando DllImportSearchPath.AssemblyDirectory è stato specificato come unico flag di ricerca, il runtime ha cercato prima la directory dell'assembly. Se la libreria non è stata trovata, si è ricorso al comportamento predefinito di ricerca delle librerie del sistema operativo.

Ad esempio, con il codice seguente, il runtime cercherà nella directory dell'assembly e quindi ricorrerà ai percorsi di ricerca del sistema operativo.

[DllImport("example.dll", DllImportSearchPath = DllImportSearchPath.AssemblyDirectory)]
public static extern void ExampleMethod();

Nuovo comportamento

A partire da .NET 10, quando DllImportSearchPath.AssemblyDirectory viene specificato come unico flag di ricerca, il runtime esegue la ricerca solo nella directory dell'assembly. Non ricorre al comportamento predefinito di ricerca della libreria del sistema operativo.

L'esempio di codice precedente ora cerca solo nella directory di assembly example.dll. Se la libreria non viene trovata, viene generata un'eccezione DllNotFoundException.

Tipo di cambiamento che interrompe la compatibilità

Si tratta di una modifica comportamentale .

Motivo della modifica

Il comportamento di fallback quando si specificava DllImportSearchPath.AssemblyDirectory causava confusione ed era incoerente con la progettazione dei flag di ricerca. Questa modifica garantisce chiarezza e coerenza nel comportamento.

Se è necessario un comportamento di fallback, evitare di specificare un oggetto esplicito DllImportSearchPath. Per impostazione predefinita, quando non vengono specificati flag, il runtime cerca nella directory dell'assembly e quindi utilizza il comportamento di ricerca predefinito delle librerie del sistema operativo.

Esempio:

[DllImport("example.dll")]
public static extern void ExampleMethod();

Le API interessate

Vedere anche