2010-01-09 29 views
32

cómo puedo hacer un exe independiente en Visual Studio. Es simplemente una aplicación de consola simple que creo que a los usuarios no les gustaría instalar una pequeña aplicación de consola. Recopilé un archivo cpp simple usando el símbolo del sistema de Visual Studio. ¿Funcionará el exe incluso si .NET Framework no está instalado? Usé el código nativo de C++.Compilar a un ejecutable independiente (.exe) en Visual Studio

+0

¿Está preguntando cómo crear un .exe que no necesita instalación incluso para usuarios sin el tiempo de ejecución de .NET? – RedFilter

+2

¿Funcionará C++ con Asveikau? ¿Algún artículo al respecto? –

+0

Se sugirió ILMerge en esta publicación duplicada posterior: http://stackoverflow.com/questions/3261942/net-whole-application-as-a-single-exe-file – JohnLBevan

Respuesta

19

Cualquier cosa que use el entorno administrado (que incluye todo lo escrito en C# y VB.NET) requiere .NET framework. Simplemente puede redistribuir su .EXE en ese escenario, pero necesitarán instalar el marco apropiado si aún no lo tienen.

+0

¿Puedo usar C++/CLI o C++ nativo para compilarlo en un exe? –

+1

Compila a un exe sin importar qué. Pero si intenta ejecutarlo, devolverá un error si .NET no está instalado. – jalf

+0

Incluso navitive C++? –

45

Dentro de su carpeta de proyectos, se trata de una carpeta bin. Dentro de la carpeta bin, hay 2 carpetas, una versión y una depuración. Para su .exe pulido, desea ir a su carpeta Release.

no estoy muy seguro de si eso es lo que usted está pidiendo

+2

Esto funcionó para mí –

+0

Esto funcionó para mí también, no puedo creer cuánto tiempo tuve que buscar hasta encontrar esto. –

+6

Tenga en cuenta que deberá compilar la versión de lanzamiento eligiendo la opción Versión en Build> Configuration Manager si aún no se ha creado. – brandaemon

3

Estoy de acuerdo con @Marlon. Cuando compile su proyecto C# con la configuración de Release, encontrará en la carpeta "bin/Release" de su proyecto el ejecutable de su aplicación. Esto DEBERÍA funcionar para una aplicación simple.

Pero, si su aplicación tiene alguna dependencia en algún dll externo, le sugiero que cree un SetupProject con VisualStudio. Al hacerlo, el asistente del proyecto encontrará todas las dependencias de su aplicación y las agregará (las librerías) a la carpeta de instalación. Finalmente, todo lo que tendrá que hacer es ejecutar la configuración en la computadora de los usuarios e instalar su software.

1

Nunca he tenido problemas para implementar una aplicación de consola pequeña hecha en C# tal como está. El único problema con el que se puede encontrar es una dependencia del .NET framework, pero incluso eso no debería ser un problema importante. Podría intentar usar la versión 2.0 del framework, que ya debería estar en la mayoría de las PC.

El uso de C++ nativo, no administrado, no debería tener ninguna dependencia en .NET framework, por lo que realmente debería estar seguro. Simplemente tome el archivo ejecutable y los archivos que lo acompañan (si los hay) y despliéguelos tal como están; no hay necesidad de instalarlos si no lo desea.

18

Si te entiendo correctamente, sí puedes, pero no en Visual Studio (por lo que sé). Para obligar al compilador a generar un ejecutable real e independiente (lo que significa que usa C# como cualquier otro idioma) utiliza el programa mkbundle (incluido con Mono). Esto compilará su aplicación C# en un ejecutable real, sin dependencias.

Hay una gran cantidad de conceptos erróneos acerca de esto en Internet. No derrota el propósito del .NET Framework como algunas personas afirman, porque ¿cómo puedes perder las características futuras del .NET Framework si no has usado estas características para empezar? Y cuando envía actualizaciones a su aplicación, no es exactamente un trabajo difícil ejecutarlo a través del procesador mkbundle antes de construir su instalador. También hay un beneficio de velocidad que implica que tu aplicación se ejecute a velocidad nativa (porque ahora ES nativa).

En C++ o Delphi tiene el mismo sistema, pero sin la capa intermedia de MSIL. Entonces, si usa un espacio de nombres o un archivo de origen (llamado una unidad en Delphi), entonces se compila e incluye en su binario final. Por lo tanto, su binario final será más grande (Tamaño de lectura: "Normal" para una aplicación real). Lo mismo ocurre con las partes del framework que usa en .net, estas también están incluidas en su aplicación. Sin embargo, los enlaces inteligentes se rapan una cantidad considerable.

Espero que ayude!

0

No creo que sea posible hacer lo que pregunta el que pregunta cuál es evitar el infierno dll combinando todos los archivos del proyecto en un .exe.

El problema del marco es una pista falsa. El problema que ocurre es que cuando tienes varios proyectos dependiendo de una biblioteca, es un PITA para mantener las bibliotecas sincronizadas. Cada vez que la biblioteca cambia, todas las .exes que dependen de ella y no se actualizan morirán horriblemente.

Decirle a la gente que aprenda C como una respuesta fue arrogante e ignorante.

Cuestiones relacionadas