2009-12-11 20 views
9

Estoy escribiendo un complemento para otra aplicación a través de una API. Los complementos se distribuyen en un archivo DLL. ¿Es posible incrustar otros archivos en el archivo DLL como pdfs, imágenes, archivos de ayuda chm, etc.? Quiero poder proporcionar documentación con mi complemento, pero me gustaría conservar la capacidad de distribuir el complemento. -en un solo archivo, el usuario puede simplemente arrastrar y soltar en la aplicación para instalar.¿Puedo incrustar otros archivos en una DLL?

Respuesta

15

Resource Files es lo que necesita.

+0

Perfecto gracias! –

+1

debe explicar cómo hacerlo, no solo pegar enlaces – Toolkit

+0

¡El enlace está roto! – LuizLoyola

0

Sí, puedes hacer eso.

Agregue un archivo de recursos a su proyecto. Abra el archivo de recursos en Visual Studio y haga clic en Insertar recurso. Puede seleccionar diferentes tipos de recursos, incluidos archivos externos.

Visual Studio generará código para usted para que pueda recuperar los archivos como matrices de bytes en tiempo de ejecución de sus nombres a través del identificador Resources.

6

Claro, puede insertar un recurso en su DLL. A continuación, en tiempo de ejecución que acaba de hacer:

Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("com.stackoverflow.plugin.example.Foo.pdf"); 

Esto le daría una corriente en el fichero de Foo.pdf incrustado en el archivo DLL. Preste atención al hecho de que el nombre del recurso debe ser delimitado por el espacio de nombres del tipo desde el que está invocando el método.

4

Claro, simplemente conviértanlas en "Recurso incrustado" en VS.NET (suponiendo que lo esté usando). A continuación, puede leerlos a través de las API de recursos o simplemente con Assembly.GetManifestResourceStream().

0

Como una opción alternativa, si necesita descomprimir y guardar los archivos en la máquina de los usuarios (digamos un archivo chm al que desea acceder fuera de su aplicación) también puede hacer lo mismo con los archivos zip.

Dijiste que querías que el archivo fuera "arrastrado" a tu aplicación. Simplemente haga que sus eventos DDE comprueben si el archivo es un archivo comprimido (tal vez incluso utilizando algo así como un contenedor con metadatos) y descomprima los archivos necesarios, incluido el complemento real.

Esta es la misma idea que los documentos de openxml, en realidad son solo cremalleras disfrazadas.

Cuestiones relacionadas