2009-06-02 32 views
37

Tengo una aplicación de consola relativamente compleja que depende de varias dlls. Me gustaría "enviar" esto en la mejor forma. Mi forma preferida sería un archivo exe con todas las dependencias incrustadas en él (no tan grande, aproximadamente 800K). Otra cosa sería simplemente comprimir el contenido de la carpeta "Debug" y ponerla a disposición, pero no estoy seguro de si todo estará disponible así (¿se resolverán todas las dependencias simplemente comprimiendo la carpeta de depuración?)Formas de implementar aplicaciones de consola en C#

¿Qué prácticas confiables existen para implementar aplicaciones de consola escritas en C# usando VisualStudio 2008?

+0

¿Es seguro asumir que la máquina de destino tiene .NET instalado en él? La versión correcta? ... ¿Es probable que las bibliotecas de las que depende probablemente estén en el GAC en esas máquinas? – jerryjvl

+0

@jerryjvl: Tengo un manejo de errores bastante extenso para el entorno. Lo único que sé con certeza es que todos los usuarios tienen .NET 3.5, que es la línea de base para todas las demás pruebas de entorno. –

+0

¿No está disponible Clickonce para aplicaciones de consola? –

Respuesta

39

Si solo copia los archivos Foo.exe, dlls y Foo.exe.config, es probable que esté bien. Sin embargo, eche un vistazo a qué más hay en la carpeta de depuración: usted (probablemente) no desea enviar los archivos .pdb o Foo.vshost.exe. ¿Hay algo mas? Si tiene elementos marcados como Contenido que se copian a la carpeta de salida, también los necesitará.

Usted podría utilizar ilmerge poner todas las dependencias en un archivo EXE, pero estoy un poco recelosos de que el enfoque - Me quedo con dlls exe + dependencia.

+0

Si va a hacer eso, probablemente debería crear una configuración de lanzamiento para asegurarse de que los PDB no estén incluidos. – brien

+2

¿Qué tal ... compilar para el modo de lanzamiento? –

+0

http://msdn.microsoft.com/en-us/library/wx0123s5.aspx Es solo una forma de compilar sin los símbolos de depuración y el archivo pdb. – brien

12

Debería mirar en setup projects en Visual Studio. Le permiten configurar dependencias e incluir las DLL que necesita. El resultado final es un setup.exe y un instalador MSI.

Aquí hay un walkthrough que debería ayudar.

+5

¿Un proyecto de instalación completo para una aplicación de consola? ¿No es eso un poco exagerado? –

+2

No realmente, puede crear un proyecto de configuración muy rápido que solo copie los dlls y el exe que necesita al lugar correcto en la máquina del cliente. – brien

+1

Los paquetes de Windows Installer facilitan la instalación, el parchado y la eliminación.Otras soluciones como EXEs me hacen sentar en cada máquina y hacer clic en cosas. Si dependiera de mí, mi empresa nunca compraría una licencia para software publicado como un paquete que no sea Windows Installer. –

0

Crear un proyecto de instalación en VS08 y añadir la salida principal del proyecto aplicación de consola a la misma, esto resuelve las dependencias y las empaqueta en un .msi

2

o puede utilizar un archivo ZIP de extracción automática. Empaque todos los archivos normales - .exe, .dll, .config y cualquier otra cosa - en un archivo zip. Extraiga en un directorio temporal y configure el programa run-on-extract para que sea el administrador de consola real.

Cuestiones relacionadas