2010-02-23 25 views
10

Siempre he usado la opción Dependencias de Visual Studio para garantizar que, por ejemplo, al crear mis proyectos de C++, también se construyan los proyectos LIB o DLL dependientes. Sin embargo, sigo escuchando a personas mencionar 'referencias' y me pregunto, con VS 2010 en el horizonte, debería estar cambiando la forma en que hago esto.Dependencias de MSVC vs. Referencias

¿Hay algún beneficio al usar referencias a dependencias o es la primera una característica .NET solamente? Actualmente estoy usando VS2008.

Respuesta

16

prefiero utilizar referencias ya que éstas se introdujeron para no administrado C++ en VS 2005. La diferencia (en C perspectiva ++ no administrado de desarrollador) es que la referencia se almacena en .vcproj archivo, mientras que las dependencias del proyecto se almacenan en .sln archivo.

Esta diferencia significa que cuando reutiliza su proyecto en diferentes soluciones (y lo hago a menudo) no necesita volver a definir las relaciones entre proyectos.

Visual Studio es lo suficientemente inteligente como para no depender gravemente de las rutas de los proyectos cuando establece la relación de referencia.

+1

No sabía que podría tener proyectos nativos de C++ que tengan referencias a otros proyectos nativos de C++. Creo que presenta una interfaz más agradable para describir las dependencias que el diálogo "Dependencias del proyecto ..." (el único inconveniente es que debe abrirlo por separado para cada proyecto, pero esa es una objeción muy pequeña). –

+0

@Rob: debería mover la respuesta aceptada aquí, creo. –

+1

+1: las referencias a otros proyectos dentro de la solución también son mejores en el control de versiones cuando hay pequeños cambios en el archivo .vcproj en lugar de grandes cambios en el archivo .sln. – quamrana

1

'Las referencias' son algo de .NET y no se aplican a C++ nativo; son diferentes a los proyectos dependientes. Un proyecto dependiente en una solución es un proyecto que debe construirse antes (o después dependiendo de qué camino siga la dependencia) de otro proyecto.

Una referencia es un conjunto que contiene los tipos utilizados en el proyecto. Lo análogo en un proyecto nativo de C++ podría ser los archivos de inclusión utilizados por un proyecto y los archivos .lib que se vinculan (el proyecto nativo de C++ 'consume' esos elementos incluso si no están incorporados en otro paso de la solución) .

+4

-1 Referencias SÍ se aplican a C++ nativo y funcionan más o menos como en una versión administrada. Obliga a una "dependencia" del proyecto (siempre creará proyectos referenciados primero) y agregará el resultado del proyecto al vinculador. Esto significa que no tiene que juguetear con las rutas y los nombres de la biblioteca al enlazar. –

1

Solía ​​ser en VS2008 que una dependencia de proyecto en una biblioteca estática daría lugar automáticamente a la configuración correcta (Debug | Release) se vincularía. Parece que VS2010 perdió esa capacidad con el movimiento a msbuild. Suspiro.

+0

No se pierde, puede cambiar estas opciones en ventanas de propiedades después de hacer clic en referencia en Visual Studio 2015 – codekiddy

Cuestiones relacionadas