45 votes

Référence de projet ou référence de DLL - Quelle est la meilleure solution ?

Je sais qu'il y a d'autres questions concernant ce sujet, et j'ai regardé à cette question mais j'aimerais voir un peu plus de discussions et d'informations sur les deux côtés de la question - est-ce une meilleure pratique d'ajouter un projet à une solution et de faire référence au projet, ou d'ajouter une référence au fichier .dll ?

35voto

Hans Passant Points 475940

Ce n'est pas vraiment un choix. Si vous avez une solution avec les deux projets, utilisez une référence de projet. Si votre solution n'a pas de projet, vous devez alors ont pour utiliser une référence d'assemblage.

La vraie question devrait donc probablement être : puis-je créer une solution avec les deux projets ? Oui, tant que le projet est encore en phase de débogage et qu'il est susceptible de nécessiter des corrections de bogues.

20 votes

C'est plus complexe lorsque vous avez plusieurs solutions. L'utilisation d'une référence de projet peut casser la construction d'autres solutions qui incluent le projet de référence et non le projet référencé. Visual Studio résout alors silencieusement( !) la référence du projet en une référence de fichier à la dll dans bin/Debug, ce qui est inattendu et casse si la solution se compile en Release.

0 votes

Vous pouvez résoudre ce problème en ajoutant d'abord les projets parents à votre solution, et en n'ajoutant aucun projet sans ses projets parents (référencés).

1 votes

Juste pour ajouter - si vous utilisez la référence dll sur le projet A lorsque vous cliquez sur "Trouver toutes les références" sur une méthode du projet B, la référence de la méthode du projet A n'apparaîtra pas du tout = recette pour des erreurs

21voto

ChrisF Points 74295

Si vous n'avez que la dll, vous êtes coincé avec une référence de dll (évidemment).

Si vous avez la source, il est généralement préférable d'utiliser une référence de projet. Il peut arriver que vous ayez une bibliothèque utilitaire qui ne changera jamais, mais s'il y a la moindre chance que vous ayez besoin de corriger un bogue, avoir une référence de projet facilitera grandement le débogage.

5voto

Franz Points 39

Résumé - Référence de projet par projet vs par DLL

Référence par projet

  • le code est visible
  • trouve toutes les références, par exemple sur une classe (parce que le code est visible)
  • meilleur pour les tests (dans l'ensemble)
  • meilleur pour la refonte du code (impact)

Référence par DLL

  • le code est caché
  • séparation entre, par exemple, le cadre et le projet (pour la livraison du cadre)
  • compilation plus rapide (car la DLL est déjà compilée)

2voto

Taylor Leese Points 18895

Les références de projet sont utiles lorsque vous construisez et testez à la fois en mode débogage et en mode version. Si vous ajoutez directement une DLL, vous êtes bloqué par ce que cette DLL particulière a été construite. La référence de projet permet de prendre cette décision au moment de la construction.

0 votes

Ce que vous dites est exact. En même temps, cela ne pose pas de problèmes lorsque l'on travaille avec des assemblages .NET. Elles contiennent du code IL qui est compilé ultérieurement sur une machine de destination lors de la première exécution. Un moment très agréable pour les décisions.

-3voto

Pradish Points 1

En ce qui concerne l'architecture de votre projet, vous devez toujours vous en tenir aux projets relevant de votre domaine de compétence. Vous devriez utiliser le GAC, si cela est applicable à votre environnement.

5 votes

En quoi le GAC a-t-il quelque chose à voir avec les références de projet par rapport aux références de dll dans un fichier de projet Visual Studio ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X