Como obter o caminho executável de uma DLL gerenciado
-
02-07-2019 - |
Pergunta
Eu tenho uma DLL gerenciada (escrito em C ++ / CLI) que contém uma classe usada por um C # executável. No construtor da classe, eu preciso ter acesso ao caminho completo do executável referenciando a DLL. No aplicativo real Eu sei que eu posso usar o objeto Application para fazer isso, mas como posso fazê-lo a partir de um gerenciado DLL?
Solução
Assembly.GetCallingAssembly()
ou
Assembly.GetExecutingAssembly()
ou
Assembly.GetEntryAssembly()
Dependendo da sua necessidade.
Em seguida, use Localização ou CodeBase propriedade (nunca me lembro qual).
Outras dicas
@leppie: Graças - que foi o ponteiro que eu precisava.
Para referência futura, em C ++ / CLI esta é a sintaxe real que funciona:
String^ appPathString = Assembly::GetEntryAssembly()->Location;
GetExecutingAssembly()
forneceu o nome da DLL
GetCallingAssembly()
retornou algo como System.Windows.Forms
GetEntryAssembly
devolveu o caminho completo, semelhante ao GetModulePath()
sob Win32.