SQLite de PHX Software ha combinado un ensamblado administrado (System.Data.SQLite) con un dll no administrado (el dll SQLite de 32 o 64 bits) en un archivo y logró unirlos.¿Cómo combino un dll no administrado y un ensamblado administrado en un archivo?
¿Cómo puedo hacer esto? ¿Debo incrustar el ensamblado administrado en el dll no administrado, o viceversa?
es decir. mis preguntas son:
- ¿En qué orden debo hacer esto?
- ¿Qué herramientas o conocimiento necesito para hacer esto?
- ¿Cómo (si es diferente) puedo vincular a las funciones exportadas desde el dll no administrado en mi código administrado?
La razón por la que pregunto esto es porque quiero construir un contenedor administrado zLib. Sé que hay clases administradas en .NET, pero por experiencia son un poco limitadas (y un poco descaradas ya que no hacen el almacenamiento en búfer adecuado), así que me gustaría crear mi propia copia, también porque quiero aprende a hacer esto
Entonces, ¿alguien sabe lo que tengo que hacer y cómo?
que he encontrado lo siguiente:
- How to merge several managed and unmanaged DLLs into a single DLL?
- Sample: Mixing Unmanaged C++, C++/CLI, and C# code
Voy a probar esto, pero cualquier información adicional disponible sería bueno también.
Piense dos veces antes de hacer esto, especialmente con sus montajes de "núcleo". Si esta no es la característica esencial de su código, es mejor que dichos ensamblajes se carguen dinámicamente.En otro caso, cualquiera que use dicho ensamblado deberá realizar algunos pasos adicionales para asegurarse de que utiliza la versión adecuada (x86 frente a x64), incluso si no usó ninguno de sus códigos no administrados. Es razonable para usted ejemplo de 'System.Data.SQLite' (característica esencial) pero podría no ser razonable en su caso. – SergGr