Jump to content

Empacotar dlls de PlataformasDiferentes


Nelson Sousa

Recommended Posts

Olá,

Boa noite!

Utilizo o C# no V. Studio 2017.

Vou precisar utilizar dlls em meu sistema que, apesar de terem o mesmo nome, são compiladas para plataformas diferentes.

Vou dar um exemplo:

libeay32.dll - esta biblioteca (de terceiros) é compilada em duas plataformas diferentes x86 e x64. O nome permanece o mesmo seja qual for a plataforma.

Gostaria de "empacotar" as dlls de cada plataforma em um arquivo de recurso e "desempacotar" logo após verificar em qual plataforma elas irão trabalhar. Ou seja, se o sistema averiguar que o Sistema Operacional é x86, "desempacota" as dlls x86. Se o Sistema Operacional é x64, desempacota as dlls x64.

Eu tentei separá-las em pastas diferentes (...\x86\) e (...\x64\) e informar o path no constructor da classe. Porém, como essa dlls são dependências de outra "dll mãe", elas tem por padrão a pasta raiz do EXE ou a pasta system do Windows.
Vejam abaixo como ficou o constructor da classe:

public ACBrNFe(string eArqConfig = "", string eChaveCrypt = "") :
            base(Environment.Is64BitProcess ? @"AcbrLib\x64\ACBrNFe64.dll" : @"AcbrLib\x86\ACBrNFe32.dll")
        {
            InitializeMethods();

            var inicializar = GetMethod<Delegates.NFE_Inicializar>();
            var ret = ExecuteMethod(() => inicializar(ToUTF8(eArqConfig), ToUTF8(eChaveCrypt)));

            CheckResult(ret);

            
        }

Reparem que as "dlls mães" são as AcbrNFe64.dll e AcbrNFe32.dll.

Essas duas utilizam várias dlls por dependência entre elas a libeay32.dll, todas de mesmo nome, porém cada uma com o grupo de dlls de sua respectiva plataforma.

Então meu problema é esse: Como distribuir dlls com nomes idênticos mas de plataformas diferentes? Isso sem ter que construir 2 instaladores...rsrsrs.

Um Abraço,

Nelson Sousa

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.