2010-07-23 51 views
15

En VC++ puedo presionar CTRL + F7 para compilar un solo archivo, o hacer clic con el botón derecho en un archivo fuente o compilarlo. ¿Es posible compilar un solo archivo (o archivo actual) en C#?¿Cómo compilar solo un archivo en C#?

Me gustaría, por ejemplo, saber si mi archivo actual tiene algún error sin tener que compilar todo.

+0

El compilador de C# es * increíblemente rápido en compilar un único ensamblaje, incluso uno con una gran cantidad de código. ¿Está seguro de que realmente está siendo retenido por esto? –

Respuesta

6

No, no es posible hacer esto en C#.

A diferencia de C++, un archivo C# no se puede compilar de forma razonable para determinar si tiene algún error. C++ logra esto a través de las declaraciones #include que permite que un archivo .cpp comprenda la declaración de los tipos disponibles. Estas declaraciones definen la estructura de los tipos de los que depende el archivo actual y le permite al compilador asegurarse de que se utilizan de acuerdo con las especificaciones.

Este proceso se maneja implícitamente en C#. El conjunto de declaraciones disponibles es simplemente el conjunto de todas las declaraciones en todos los archivos compilados que son accesibles de otra manera. No hay forma de reenviar las dependencias de la forma en que lo hace C++ y, por lo tanto, no hay forma de garantizar que se utilicen correctamente en un solo archivo.

+0

¿No podría, en teoría, analizar todo lo que necesita e ignorar todos los errores, excepto los de los tipos utilizados en mi archivo fuente actual? Por lo tanto, solo informa los necesarios. – Winforms

+0

@ Winforms, ¿por qué no simplemente compilar y ordenar la lista de errores por nombre de archivo y desplazarse al archivo en cuestión? – JaredPar

+2

Supongo que cuando estoy en medio de la refactorización de un gran fragmento de código, me gustaría ver solo errores para ese archivo, pero veo su punto. Solo una de mis molestias desde que me mudé a C# – Winforms

3

Una herramienta complementaria de Visual Studio como ReSharper es una muy buena inversión para esta situación.

ReSharper realiza un análisis continuo de los códigos de toda la solución e informará los problemas al mostrar convenientemente una barra al lado del archivo de código \ document scrollbar que tiene líneas rojas \ naranjas que denotan cualquier línea de código que tenga problemas \ errors. Las líneas mostradas son clic capaz de navegar a la línea en cuestión y también tienen sobre herramientas que detallan lo que el problema exacto es:

http://www.jetbrains.com/resharper/features/code_analysis.html#Continuous_Code_Quality_Analysis

 
      http://www.jetbrains.com/resharper/features/screenshots/50/marker_bar.png 

los temas \ advertencias que ReSharper puede comprobar si son configurables (pero tiene una excelente configuración lista para usar), y puede denotar cualquier cosa, desde errores que podrían hacer que el código no se compile a problemas más sutiles donde ha detectado un posible resultado de llamada a un método nulo que no ha sido explícitamente verificado .

0

Shift-F6 compilará el conjunto actual, que es casi lo que desea.

+0

¿Qué versión de VS es esta? Intenté Shift + F6 y no pasó nada. –

+0

Eso fue probablemente en 2008 dado que se publicó en 2010. –

1

En la línea de comandos: % windir% \ Microsoft.Net \ Framework \ V3.5 \ csc.exe/target: File.cs biblioteca

razonablemente podría adjuntar esto a la solución de los exploradores a través del menú contextual Herramientas -> Herramientas externas

establecen los argumentos a/target: $ biblioteca (ItemPath)

algo así podría hacer lo que quiera. Aunque el archivo no debería depender de ningún otro archivo del proyecto ni de los binarios a los que se hace referencia, aparte de lo que contiene el GAC.

10

Para Cs solo archivo de compilación + Run:

  1. En VS 2008, vaya a "Herramientas"> "Herramientas externas"
  2. Haga clic en "Añadir"
  3. Título: Ejecutar CSC (o lo que quieras)
  4. Comando: C: \ Windows \ system32 \ cmd.exe
  5. Argumentos:/c C: \ Windows \ Microsoft.NET \ Framework \ v3.5 \ csc.exe/target: winexe $ (ItemPath) & & $ (ItemFileName)
  6. directorio inicial: $ (ItemDir)
  7. Comprobar uso ventana de salida
  8. Aplicar + Ok
  9. Vaya a Herramientas y seleccione "Ejecutar CSC"

Si esto no funciona, verificar que sus caminos para cmd y csc partido.

+0

Excelente trabajo. Además, si usa Visual Studio 2010, reemplace ** v3.5 ** con ** v4.0.30319 ** en el paso 5. –

0

Sí, es posible. Puede llamar al compilador directamente mediante el símbolo del sistema. es decir

  1. Crear una sola fila '' Hello.cs
  2. Abra el símbolo de Visual Studio
  3. Vaya al directorio que tiene '' Hello.cs
  4. Run csc hello.cs
  5. Ejecutar el archivo único escribiendo hello.exe

Esto al menos le indicará si un solo archivo se compila o no. Puede encontrar más información aquí: https://msdn.microsoft.com/en-us/library/78f4aasd.aspx