Référencement d’une DLL .NET externe fournie par une autre application en C #

J’ai un projet C # qui fait référence à une DLL (appelez-la DLL externe) fournie avec une autre application. Lorsque je construis mon projet, en raison de la référence, la DLL externe est automatiquement ajoutée à la sortie de mon projet. Et lorsque je lance mon projet, il charge la DLL externe à partir de mon dossier de projet.

L’autre application, à laquelle appartient la DLL externe, est développée par une autre équipe et la DLL est régulièrement mise à jour. Je ne veux pas empaqueter leur DLL avec mon projet. Au lieu de cela, j’aimerais que mon projet charge sa DLL une fois exécutée, plutôt que de sélectionner la copie de la DLL dans le dossier de mon projet.

Maintenant, je sais que cela est possible grâce à la reflection. Je sais que je peux faire un “Assembly.Load” et choisir la DLL. Mais comme j’utilise les types de la DLL externe tout au long de mon code, j’aimerais que le code soit vérifié statiquement.

Voici ce que je voudrais:

  1. Pouvoir comstackr mon projet en référençant la DLL externe et obtenir ainsi une vérification de type statique.
  2. Lorsque le projet est exécuté, la DLL externe est extraite du dossier de l’autre application et non de la copie de la DLL figurant dans le dossier de sortie de mon projet.

Y a-t-il un moyen de résoudre ce problème? Existe-t-il un moyen terme entre l’ajout d’une référence et l’utilisation de la reflection?

La solution la plus immédiate à votre problème consiste à modifier les propriétés de la référence. Il existe un paramètre appelé Copy Local . Définissez-le sur false et la copie de la DLL dans la sortie de votre projet sera alors arrêtée. Vous pouvez accéder aux propriétés de la référence en développant le dossier de références dans votre solution, en cliquant avec le bouton droit de la souris sur la référence en question et en cliquant sur les propriétés pour ouvrir le volet des propriétés.

Le fait que Visual Studio copie la DLL dans le dossier de sortie de votre projet au moment de la compilation n’a pas vraiment d’importance pour .Net Framework au moment de l’exécution. Ce qui compte, c’est que les assemblys que vous référencez soient disponibles pour la structure, que ce soit dans les chemins qu’elle recherche ou dans le cache de l’assembly global.