12
votes

Dépendances MSVC vs. Références

J'ai toujours utilisé l'option Visual Studio Dépendances pour vous assurer que, par exemple, lors de la création de ma projets C ++, tout projet LIB ou DLL dépendantes est également construit. Cependant, je continue d'entendre que les gens mentionnent des "références" et je me demandais avec vs 2010 à l'horizon, je devrais changer comment je fais cela.

Y a-t-il des avantages à utiliser des références à des dépendances ou est l'ancienne fonctionnalité .NET uniquement? J'utilise actuellement VS2008.


0 commentaires

3 Réponses :


0
votes

'Les références' sont une chose .NET et ne s'appliquent pas à Native C ++; Ils sont différents des projets dépendants. Un projet dépendant dans une solution est un projet qui doit être construit avant (ou après la manière dont la dépendance va) un autre projet.

Une référence est un assemblage contenant des types utilisés dans le projet. La chose analogue dans un projet natif C ++ pourrait être les fichiers inclus utilisés par un projet et les fichiers de .lib qui sont liés (le projet natif C ++ "consomme" ces articles même s'ils ne sont pas construits dans une autre étape de la solution) .


1 commentaires

-1 Les références s'appliquent à Native C ++ et agissent à peu près la même chose que dans une version gérée. Il oblige une "dépendance" sur le projet (construira toujours des projets référencés d'abord) et ajoutera la sortie du projet à la liaison. Cela signifie que vous n'avez pas à jouer avec des chemins de bibliothèque et des noms lors de la liaison.



19
votes

Je préfère utiliser des références car celles-ci ont été introduites pour non gérés C ++ dans VS 2005. La différence (dans la perspective de développeur de C ++ non gérée) est que la référence est stockée dans le fichier .vcproj , tandis que les dépendances du projet sont stockées dans .sln fichier.

Cette différence signifie que lorsque vous réutilisez votre projet dans différentes solutions (et que je le fais souvent), vous n'avez plus besoin de redéfinir à nouveau les relations inter-projet.

Visual Studio est suffisamment intelligent pour ne pas dépendre gravement sur les chemins des projets lorsqu'il établit la relation de référence.


3 commentaires

Je ne savais pas que vous pourriez avoir des projets natifs C ++ ont des références à d'autres projets natifs C ++. Je pense que cela présente une interface plus agréable pour décrire les dépendances que les "dépendances du projet ..." (le seul inconvénient est que vous devez l'ouvrir séparément pour chaque projet, mais c'est un quibble très mineur).


+1: Les références à d'autres projets de la solution sont également plus gentilles sur le contrôle de la version lorsqu'il y a de petites modifications au fichier .vCProj plutôt que de grandes modifications apportées au fichier .sln.


C'est une bonne réponse, car cela démontre également le contraire - vous pouvez avoir une commande de construction à charge sans relier la dépendance. Par exemple, je crée une DLL qui sera chargée à la demande et non chargée immédiatement avec l'EXE.



1
votes

Il était utilisé pour être dans VS2008 qu'une dépendance du projet sur une bibliothèque statique entraînerait automatiquement la bonne configuration (la libération de débogage) serait liée. Il ressemble à VS2010 perdu cette capacité avec le déménagement à Msbuild. Soupir.


1 commentaires

Il n'est pas perdu, vous pouvez modifier ces options dans les propriétés Windows après avoir cliqué sur référence dans Visual Studio 2015