239 votes

La DLL dépendante n'est pas copiée dans le dossier de sortie de la compilation dans Visual Studio.

J'ai une solution Visual Studio. J'ai plusieurs projets dans cette solution. Il y a un projet principal qui agit comme le démarrage et utilise d'autres projets. Il y a un projet appelé "ProjectX". Sa référence est ajoutée au projet principal. Le ProjectX fait référence à une autre dll .NET (disons abc.dll) qui ne fait pas partie de la solution.

Maintenant, cette abc.dll devrait être copiée dans le dossier bin/debug du projet principal, mais elle n'y est pas copiée. Pourquoi n'est-elle pas copiée, y a-t-il des raisons connues ?

2 votes

Si vous n'y arrivez pas, copiez-le dans votre pré-construction.

1 votes

Comment utilisez-vous votre "ProjetX" dans le projet principal - quel est le type de projet, la cible, etc.

2 votes

J'ai eu le même problème et cette réponse l'a résolu : stackoverflow.com/a/8213977/174469

1voto

Cadburry Points 1626

PAS BESOIN DE MANNEQUIN DANS LE CODE
Juste :

ajouter une référence au projet exécutable

ou/et s'assurer que la référence dans le projet exécutable a "Copy Local" réglé sur TRUE (qui était mon " défaut ") est semble-t-il que cette "overwrote" le réglage dans la base référencée library-project...

0voto

RicL Points 505

En plus des problèmes communs ci-dessus, j'avais une solution multi-projets à publier. Apparemment, certains fichiers ciblent différents frameworks.

Donc ma solution : Propriétés > Version spécifique (Faux)

0voto

abhijithkarkal Points 11

Ajoutez la DLL comme élément existant à l'un des projets et elle devrait être triée.

0voto

Richard Moore Points 421

VS2019 V16.6.3

Pour moi, le problème était que le fichier .proj principal se retrouvait avec une entrée comme celle-ci pour le projet dont la DLL n'était pas copiée dans le dossier bin du projet parent :

<ProjectReference Include="Project B.csproj">
  <Project>{blah blah}</Project>
  <Name>Project B</Name>
  <Private>True</Private>
</ProjectReference>

J'ai supprimé manuellement la ligne <Private>True</Private> et la DLL a ensuite été copiée dans le dossier bin du projet principal à chaque construction du projet principal.

Si vous allez sur la référence du projet problématique dans le dossier des références du projet principal, cliquez dessus et affichez les propriétés, il y a un paramètre "Copy Local". La balise privée correspond à ce paramètre, mais pour une raison quelconque, le fait de modifier la copie locale n'a eu aucun effet sur la balise privée dans le fichier .proj.

Malheureusement, je n'ai pas modifié la valeur locale de copie pour la référence, je n'ai aucune idée de la façon dont elle a été définie de cette façon et une autre journée perdue à traquer un problème stupide avec VS.

Merci à toutes les autres réponses qui m'ont aidé à trouver la cause.

HTH

0voto

Coder Points 99

J'ai eu un problème similaire dans lequel une DLL que j'avais incluse dans le projet en tant que contenu et dont l'option 'Copy always' était activée, n'était pas copiée dans le dossier bin. J'ai résolu ce problème en ajoutant une référence dependentAssembly à la DLL dans le fichier app.config.

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