2011-08-20 11 views

Respuesta

47

Un archivo de proyecto (.vcproj/.vcxproj) contiene configuraciones sobre cómo compilar el código en un archivo DLL o binario, o algo más que el vinculador puede ensamblar en una unidad. Un archivo de proyecto es solo un archivo xml que contiene la configuración del compilador, la configuración del enlazador y describe qué archivos desea compilar.

Un archivo de solución es un archivo de texto que agrupa varios archivos de proyecto.

Así que si usted piensa en él como un árbol, entonces usted tiene una buena imagen mental de esta manera:

.sln 
    .vcproj 
     .h 
     .h 
     .cpp 
     .cpp 
    .vcxproj 
     .h 
     .h 
     .cpp 
     .cpp 
    .csproj 
     .cs 
+2

'* .vcxproj' es Visual Studio 2010 y superior. '* .vcproj' es Visual Studio 2008 y siguientes. ¿Cómo puede una solución de Visual Studio {2005 | 2008} contener un archivo de proyecto de Visual Studio 2010? También vea [Build System Changes] (https://msdn.microsoft.com/en-us/library/ee862524.aspx) en MSDN. – jww

0

Visual Studio permite múltiples proyectos en una solución. Los datos de qué proyectos se encuentran en una solución se encuentran en el archivo sln (solución).

5

En resumen: una es para solución, y la otra es para proyecto, y una solución puede contener varios proyectos.

9

Los archivos de soluciones y proyectos están en formato XML y describen las partes de sus proyectos y sus relaciones, configuraciones, etc. De hecho, ambos archivos son simplemente scripts de MSBuild (que se ejecutan a través de MSBuild cuando, lo adivinó, construyendo su proyecto).

Esto significa que son fáciles de manipular a mano si es necesario (aunque esto debería ser caso raro) y también permite agregar partes personalizadas al script de compilación, crear scripts de compilación personalizados para MSBuild que pueden incluir el archivo de solución, entre otras cosas, o simples scripts de compilación automática que pasan el archivo de solución (o proyecto) a MSBuild , por ejemplo, en el control de la versión de check-in.

La diferencia entre archivos de solución y archivos de proyecto es que un archivo de proyecto contiene información específica para que proyecto, sin darse cuenta de su solución (aunque, Visual Studio buscará la jerarquía en una medida en un intento de encontrar la solución relevante al abrir un proyecto, si existe); el archivo de solución conoce todos los proyectos que forman parte de esa solución y hace referencia a cada uno de ellos (como un directorio de archivos, si lo desea, pero con proyectos), también contiene información/configuración en toda la solución, que puede ser aplicable a todos los proyectos dentro de la solución.

Como señala Hans Passant, hay una excepción: los archivos para proyectos C++ anteriores a VS2010 no son archivos XML MSBuild, sino que son un format documented by Microsoft on MSDN.

+2

El archivo .vcproj no es un script de msbuild. No hasta VSv1010 .vcxproj –

+0

@ Hans Passant: Esa información útil, no tenía idea; Hice una búsqueda rápida y obtuve [esta página de referencia] (http://msdn.microsoft.com/en-us/library/2208a1f2 (v = VS.90).aspx) - gracias por la contribución. –

+2

Sé que este es un hilo antiguo pero ... Los archivos SLN no tienen formato XML. sí, es un archivo de texto, pero no hay elementos XML en el archivo. –

5

Un archivo .vcproj contiene información acerca de cómo compilar origen a un destino (en su mayoría , un ejecutable). En muchos casos, es crucial tener el archivo del proyecto para una compilación exitosa, así que no lo elimine. Es comparable a un archivo .dsp (Visual Studio 6), un archivo .prj (compiladores Borland) o un Makefile (Unix, compiladores GNU) y contiene rutas y opciones de línea de comandos compilador/enlazador.

Un archivo .sln es simplemente una colección de múltiples archivos .vcproj. Como Visual Studio puede crear uno automáticamente si no está presente, no es necesario guardarlo para su distribución o archivo. Es el sucesor de un archivo .dsw (Visual Studio 6). Su nombre "archivo de solución" es IMHO engañoso.

+1

Los archivos de solución contienen el árbol de dependencias de compilación interproyectos configurado manualmente, por lo que no querrá eliminar un archivo de solución que cubra más de un proyecto. – GeePokey

Cuestiones relacionadas