7
votes

Visual Studio Solution Référence du projet ou DLL Référence

Je recherche des conseils sur une référence de référence / DLL de la pratique de référence.

La situation est que nous avons des dll utilitaires qui sont utilisés dans un groupe de projets et des membres de l'équipe de référence par projet et certains par référence dans une DLL.

Les inconvénients à la référence du projet sont les suivants:

  • peut se retrouver avec trop de projets dans la solution
  • introduit des mises à jour rapides d'échec puisque la DLL ne peut plus être versionné
  • oblige tout le monde à avoir une structure de dossiers similaire pour son code

    Les réciproques sur le dossier libérade Référence:

    • Enregistrement de bogues retardé depuis que la DLL pourrait être mise à jour beaucoup plus tard dans le projet en l'utilisant
    • Le débogage n'est pas possible sans fichiers PDB à jour à jour

      En outre, quelle serait une bonne stratégie pour assurer que tous les projets fonctionnent toujours avec les mises à jour de la DLL? Aurait-il besoin d'être un serveur de construction de dépendance de dépendance de dépendance de dépendance à la mise à jour de l'utilitaire?

      Nous utilisons SVN comme contrôle source.


0 commentaires

3 Réponses :


1
votes

L'approche que j'utilise est de télécharger la DLL compilée dans un serveur dans un événement post-construction du projet DLL et de les télécharger dans l'événement de pré-construction du projet que j'utilise des DLL. C'est la meilleure approche de mon expérience. C'est la meilleure approche de mon expérience. Lorsque j'ai utilisé des références de projet, certaines erreurs ont eu des erreurs décontractées (autant que je puisse vous rappeler que STH avec le code DLL n'est pas mis à jour correctement).

Dans cette approche, le codeur de projet DLL décide quand il souhaite "publier" le code.


0 commentaires

3
votes

Nous configurons un serveur Nuget interne pour gérer cela. Ceci est un moyen facile de gérer la gestion de la distribution et de la version.


2 commentaires

Avec Nuge interne, comment gérez-vous le débogage? En outre, faites-vous juste un projet à la fois lorsqu'il vérifie si la DLL a cassé quoi que ce soit?


Nous l'utilisons surtout pour distribuer des DLL de contrat de service. Si vous devez pouvoir déboguer les DLL distribuées, vous pouvez regarder quelque chose comme Symbole Source. ( symbolsource.org/public ). En ce qui concerne le débogage par rapport à d'autres projets, des modifications de rupture sont correctes car les applications consommatrices n'ont pas de mise à niveau vers la nouvelle version tant qu'elles sont prêtes à le faire. S'il s'agit d'un vrai bogue, j'espère que cela peut être corrigé et le paquet redéployé.



4
votes

Nous faisons quelque chose de similaire à Peuczyński. Nous avons un dossier sous la racine de notre arborescence source où tous les fichiers DLL, PDB et XML DOC à partir de nos ensembles de bibliothèque vont (donc la version est contrôlée comme tout le reste). D'autres projets font référence à ceux (pas directement aux projets LIB ou à leurs DLL bin). Cela permet de travailler sur le code lib sans perturber le développement de solutions régulières. Seulement lorsque le code LIB est solide est «publié» au dossier officiel LIB (où toutes les DLL, PDBS et XMLS Go).

Un petit piratage qui nous a permis d'avoir des versions de débogage et de libération, et d'avoir Visual Studio enlèver le bon dans les projets à l'aide du code de la bibliothèque sans que Funky Pre Country Stuff était de disposer de trois sous-dossiers dans le dossier Libs, avec ceux-ci Dossiers nommés comme suit: $ (configuration) , débogage et version . Lors de l'ajout d'une référence à une DLL de bibliothèque, vous choisissez toujours le fichier à partir du dossier $ (configuration). Ce nom du dossier tourne vs pour utiliser la DLL à partir du dossier de débogage ou de publication, en fonction du type de construction que vous faites.


3 commentaires

Donc, vous avez une structure comme la racine \ Lib avec chaque dll de bibliothèque et à l'intérieur de ce dossier, il y a 3 dossiers qui sont des 3 dossiers qui sont la configuration root \ lib \ $, root \ lib \ debug et root \ liberne avec dll et fichiers associés avec DLL et fichiers associés dans le débogage et la libération?


Avec l'utilisation du dossier de débogage partagé, existe-t-il un moyen de faire fonctionner différentes équipes sur leurs propres versions de débogage?


@Joshuabarker - Oui, 3 dossiers sous Lib, l'un d'entre eux s'appelle "$ (configuration)", littéralement, y compris des parenthèses. Lorsque les Libs sont construits, les fichiers DLL, PDB et XML sont copiés dans le dossier de débogage des bâtiments de débogage et de publication pour les constructions de version. Le contenu de l'un d'entre eux est copié à $ (configuration) simplement pour obtenir quelque chose à Pointer VS à (mais vs utilisera ensuite les fichiers de débogage ou de libération - il n'utilisera pas réellement les fichiers en $ (configuration). Nous utilisons presque toujours simplement le dossier de libs partagé pour le code «Golden». Un dossier LIBS séparé peut être effectué pour un besoin spécial temporaire.