¿Cómo puedo compilar un proyecto .NET sin tener instalado Visual Studio?

36

Quiero compilar un proyecto .NET / C #, pero no quiero instalar Visual Studio para hacerlo.

¿Qué herramientas necesito y cómo puedo compilar el proyecto?

Der Hochstapler
fuente
¿Visual Studio Express no funcionará para usted?
svick
1
@svick: Si me necesitan tenerlo para compilar el proyecto, entonces lo usaría. Pero en este caso no es necesario, por lo que no tengo que instalarlo en todas las máquinas donde quiero implementar el proyecto. Simplemente puedo extraer una copia del VCS, compilarla y ejecutarla. La instalación de VS Express habría complicado demasiado el proceso completo.
Der Hochstapler
En ese caso, una solución más simple podría ser implementar un ensamblado compilado. De esa manera, no tiene que hacer ninguna compilación en cada máquina.
svick
@svick: Gracias por su comprensión, pero la implementación de binarios también se me pasó por la mente brevemente. Si lo hubiera considerado una alternativa beneficiosa en este caso, lo habría hecho. Dicho esto, esta pregunta y respuesta se publicaron simplemente para describir un proceso. Decidir si este proceso es el camino a seguir en el caso de los usuarios es una decisión que les queda a ellos.
Der Hochstapler

Respuestas:

37
  1. Descargue e instale el último .NET Framework.
    Por ejemplo, puede usar el instalador para el instalador de .NET Framework 4.5 .

  2. Abra un símbolo del sistema y cambie al directorio de instalación de .NET Framework.
    Por ejemplo:

    cd \Windows\Microsoft.NET\Framework\v4*
    
  3. Úselo MSBuild.exepara compilar su solución.
    Por ejemplo:

    msbuild "C:\Users\Oliver\Documents\My Project\My Project.sln" /t:Rebuild /p:Configuration=Release /p:Platform="Any CPU"

En caso de que el proyecto use paquetes NuGet, puede seguir estos pasos para recuperarlos:

  1. Descargue el boostrapper NuGet.exe Command Line y, por ejemplo, colóquelo dentro del directorio de la solución.

  2. Abra un símbolo del sistema y cambie al directorio de la solución.
    Por ejemplo:

    cd "C:\Users\Oliver\Documents\My Project"
    
  3. Invoque NuGet.exepara actualizar los paquetes necesarios para esta solución:

    NuGet.exe install "My Project/packages.config" -o packages/
    
Der Hochstapler
fuente
¡Agradable! ¿Algún enlace de documentación de MSBuild? Además, esto es para un proyecto VS que uno ya tiene, ¿verdad? ¿Qué pasa con la compilación de código en .CS u otros archivos fuente?
Karan
2
@Karan - ¿A alguien le importa responder en este artículo msdn.microsoft.com/en-us/library/vstudio/78f4aasd.aspx ?
Ramhound
@Ramhound: Supongo que alguien bien informado también puede incorporar todo esto en una sola respuesta de tipo FAQ. También algunas preguntas de seguimiento que pueden abordarse. ¿También se incluye csc.exe con una instalación de .NET Framework para el usuario final? ¿Está incluido si solo instala el Perfil de cliente?
Karan
1
@Karan: agregué un enlace a la MSBuild.exedocumentación del argumento de la línea de comando. Sí, esto es para un proyecto que ya está en la máquina local (tal vez descargado de GitHub). Como Ramhound menciona, csc.exesería la herramienta para compilar archivos individuales. csc.exetambién se incluye con .NET Framework. Es el compilador central de C # y MSBuild probablemente solo lo invoca. No estoy seguro sobre el perfil del cliente, pero supongo que están incluidos en él.
Der Hochstapler
1
Una razón que csc.exedebe incluirse es porque el Perfil del cliente incluye la XmlSerializerclase. Esta clase genera ensamblados de serialización (usando csc.exe) en tiempo de ejecución.
heavyd
3

Si desea evitar la instalación de Visual Studio, puede probar Mono , un marco de desarrollo y tiempo de ejecución .NET multiplataforma y de código abierto. Mono se basa en el estándar ECMA publicado para C # y es directamente compatible con aplicaciones C # precompiladas.

Mono también incluye una herramienta llamada XBuild que puede reemplazar completamente a MSBuild. Consulte este artículo del proyecto Mono sobre cómo portar un proyecto de MSBuild a XBuild. Una descripción de una línea de XBuild de Wiki:

xbuild es la implementación de mono de msbuild y permite que los proyectos que tienen un archivo msbuild se compilen de forma nativa en Linux.

Tenga en cuenta que además de Linux, Windows y Mac OS X también son compatibles.

Penetración
fuente
1
¿Hay alguna razón que uno usaría monoen Windows?
Rishav
2
@Rishav ¿Consideraciones políticas? Quizás para alguien a quien se le requiere usar Windows pero quiere usar la menor cantidad posible de otra tecnología de Microsoft. Sin embargo, solo especulando.
Jamie