Référence de la DLL non copiée dans la corbeille du projet

Le projet A fait référence au projet B et le projet B fait référence à un DDL externe (restauré à l’aide de NuGet). La DLL doit être copiée dans le dossier bin du projet A (avec la DLL du projet B ):

Références DLL copiées dans la corbeille

Dans mon cas, lors de l’exécution du projet A , l’exception suivante est générée:

Impossible de charger le fichier ou l’ensemble ‘PostSharp, Version = 3.2.18.0, Culture = neutre, PublicKeyToken = b13fd38b8f9c99d7’ ou l’une de ses dépendances. Le système ne peut pas trouver le fichier spécifié.

La DLL n’est pas copiée dans le chut du projet A. Toutes les autres références externes du projet B sont copiées parfaitement, ce qui est source de confusion pour moi.

Copy Local est défini sur true pour toutes les références impliquées. Exemple:

Copier la référence locale

Comment puis-je faire cela?

Remarque: Utilisation de Visual Studio 2013.

Les options que j’ai trouvées étaient les suivantes:

  • Ajouter une référence à PostSharp dans le projet A.
  • Ajoutez du code factice dans le projet B afin que le compilateur détecte que la référence est utilisée.
  • Ajouter un événement de construction pour forcer la copie de la DLL.

Je n’aime aucune des solutions ci-dessus. Ce sont des bidouilles à mon avis et ne feront que créer une solution plus intenable à long terme.

J’ai résolu le problème en utilisant un répertoire de sortie commun. Cela semble être une solution recommandée par beaucoup. J’ai également connu des temps de construction beaucoup plus rapides. Voir ce post Stackoverflow .

Lorsque j’ai rencontré ce problème, c’est parce que j’ai modifié le nom d’un projet, mais pas le nom de l’assembly. Il était identique au nom de l’assembly d’un autre projet de la solution.