Pregunta

Estamos utilizando nuestro archivo .NET Assembly DLL en C ++ nativo a través de COM (CCW). Cada vez que hago una nueva versión de mi DLL, tengo que enviar dos archivos (.dll y su correspondiente .tlb) a la cuadrilla que la está usando en su código.

¿Es posible incrustar el archivo .tlb como un recurso en el archivo .NET DLL?

¿Fue útil?

Solución

No es exactamente sencillo hacer esto con Visual Studio .NET, pero se puede hacer. En un nivel básico, lo que tienes que hacer es esto:

  1. Genere su archivo TLB, por ejemplo, " YourLibrary.tlb " ;.

  2. Cree un archivo de script de recursos de Win32 llamado, por ejemplo, " YourLibrary.rc " utilizando un editor de texto (como el Bloc de notas, o Archivo / Nuevo / Archivo ... / Archivo de texto en Visual Studio).

  3. En el archivo de script, escriba el siguiente texto literalmente (pero sustituya su nombre de archivo TLB real, por supuesto):

    1 typelib " YourLibrary.tlb "

  4. Guarde el archivo de script en la misma carpeta que el archivo TLB.

  5. Desde un Símbolo del sistema de Visual Studio, cambie a la carpeta con el archivo de script y compílelo utilizando el siguiente comando:

    rc YourLibrary.rc

    Esto generará un archivo de recursos de Win32 en la misma carpeta llamada " YourLibrary.res " ;.

  6. En Visual Studio, haga clic con el botón derecho en el nodo del proyecto (por ejemplo, " YourLibrary ") en el Explorador de soluciones y seleccione Propiedades.

  7. En la pestaña de la aplicación, en " Recursos ", seleccione " Archivo de recursos " y navegue a la sección " YourLibrary.res " archivo del paso 5.

  8. Guarda y reconstruye el proyecto.

El TLB ahora se integrará como un recurso en la DLL, de modo que otras aplicaciones COM puedan leerlo.

Si vuelve a generar el archivo TLB más adelante, deberá repetir el paso 5 para volver a compilar el archivo de recursos y el paso 8 para incrustar la nueva versión en la DLL.

Dicho todo esto, es posible que pueda automatizar parte de esto con Build Events o colocando objetivos personalizados de MSBuild en su archivo de proyecto, pero esa es otra discusión.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top