C# Obtendo versão da DLL não gerenciada
-
20-09-2019 - |
Pergunta
Estou chamando uma DLL não gerenciada do meu código C# gerenciado e queria verificar que estou chamando a versão certa.
O código que estou tentando carregar a montagem (para obter o arquivo de recursos e depois obter a versão) é: cur_version = Assembly.loadfile ("x: workspace yreceipts_pos yrprintprocessor debug yrprintprocessor.dll"); Está falhando por causa deste erro:The module was expected to contain an assembly manifest. (Exception from HRESULT: 0x80131018)
Alguém sabe como contornar isso ou tem uma maneira melhor de verificar a versão de uma DLL não gerenciada do código C# gerenciado?
Obrigado antecipadamente, Richard
Solução
Conforme declarado pelo Logicnp; o conjunto. Para determinar a versão de qualquer arquivo de versão da versão, você pode usar o System.diagnostics.fileversioninfo.getversionInfo (nome do arquivo) e para carregar e chamar procedimentos não gerenciados nas DLLs, você pode consultar estes artigos:
http://blogs.msdn.com/jonathanswift/archive/2006/10/02/780637.aspx http://blogs.msdn.com/jonathanswift/archive/2006/10/03/dynamicalmente-calling-an-unagaged-dll-from-.net-_2800_c_23002900_.aspx
Boa sorte...
Outras dicas
A razão pela qual falha é porque você não pode usar o Assembly.Load para carregar DLLs não gerenciados. Veja o link sugerido por David Brown.