Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A partir do .NET 10, se você especificar DllImportSearchPath.AssemblyDirectory como o único sinalizador de pesquisa, o runtime será pesquisado exclusivamente no diretório do assembly. Essa alteração afeta o comportamento de P/Invokes e da NativeLibrary classe.
Versão introduzida
.NET 10
Comportamento anterior
Anteriormente, quando DllImportSearchPath.AssemblyDirectory foi especificado como o único sinalizador de pesquisa, o runtime pesquisou primeiro o diretório do assembly. Se a biblioteca não tiver sido encontrada, ela retornará ao comportamento de pesquisa de biblioteca padrão do sistema operacional.
Por exemplo, com o código a seguir, o runtime pesquisaria o diretório do assembly e, em seguida, retornaria aos caminhos de pesquisa do sistema operacional.
[DllImport("example.dll", DllImportSearchPath = DllImportSearchPath.AssemblyDirectory)]
public static extern void ExampleMethod();
Novo comportamento
A partir do .NET 10, quando DllImportSearchPath.AssemblyDirectory é especificado como o único sinalizador de pesquisa, o runtime pesquisa somente no diretório do assembly. Ele não reverte para o comportamento padrão de pesquisa de bibliotecas do sistema operacional.
O exemplo de código anterior agora pesquisa apenas o diretório do assembly para example.dll. Se a biblioteca não for encontrada lá, uma DllNotFoundException será lançada.
Tipo de mudança disruptiva
Essa é uma mudança comportamental.
Motivo da alteração
O comportamento de fallback ao especificar DllImportSearchPath.AssemblyDirectory causou confusão e foi inconsistente com o design dos sinalizadores de pesquisa. Essa alteração garante clareza e consistência no comportamento.
Ação recomendada
Se o comportamento de fallback for necessário, evite especificar um valor explícito DllImportSearchPath. Por padrão, quando nenhum sinalizador é especificado, o runtime pesquisa o diretório do assembly e, em seguida, volta para o comportamento de pesquisa de biblioteca padrão do sistema operacional.
Exemplo:
[DllImport("example.dll")]
public static extern void ExampleMethod();
APIs afetadas
- P/Invocações usando DefaultDllImportSearchPathsAttribute
- System.Runtime.InteropServices.NativeLibrary.Load
- System.Runtime.InteropServices.NativeLibrary.TryLoad