2008-10-27 4 views
11

J'utilise une API tierce qui est définie dans 2 DLL. J'ai inclus ces DLL dans mon projet et j'y ai défini des références. Jusqu'ici tout va bien. Cependant, ces DLL ont au moins une DLL dépendante qui ne peut pas être trouvée au moment de l'exécution. J'ai copié la DLL manquante dans le projet et j'ai mis le drapeau 'Copy to output' mais sans succès.C#: comment inclure les DLL dépendantes?

Que dois-je faire ici pour indiquer au projet où trouver la DLL dépendante?

Clarification J'ai essayé d'ajouter une référence à la DLL manquante, mais comme elle n'était pas reconnue comme un composant .Net. En désespoir de cause, je l'ai ajouté directement dans le dossier de sortie mais sans succès.

Enfin, j'ai installé l'API sur le PC et tout a fonctionné. L'installation définit la variable PATH et la DLL se trouve dans le dossier d'installation. Mais comment dire au projet de regarder dans un de ses dossiers internes?

+0

Lorsque vous dites que vous avez "copié la DLL manquante dans le projet", voulez-vous dire que vous avez ajouté une référence à celui-ci ou simplement copié le fichier? Il est probablement préférable d'ajouter une référence. –

Répondre

2

Il semble que vous ayez besoin de mieux comprendre la bibliothèque tierce et comment elle utilise ses propres dépendances. Si l'installation de l'API résout le problème, mais que la copie manuelle des fichiers ne fonctionne pas, il vous manque quelque chose. Il y a un fichier manquant, ou une variable d'environnement ou une entrée de registre requise. L'outil depends (qui fait partie de l'installation C++) et procmon, qui vous diront toutes les clés de registre et les fichiers qui sont utilisés à l'exécution, vous seront très utiles.

Si vous êtes chanceux, c'est juste un fichier qui vous manque. Si c'est tout, vous pouvez utiliser la section "Build Events" du projet pour copier les fichiers nécessaires au bon emplacement sur une build réussie. Si ce n'est pas le cas, vous devrez résoudre ce problème d'une autre manière, soit en exigeant l'installation de l'API, soit en lançant votre propre projet d'installation.

0

Comment déployez-vous? Juste des fichiers plats? Si c'est le cas, cela devrait fonctionner tant que le fichier se retrouve dans le répertoire de sortie du projet. Le fait?

Si vous utilisez un autre déploiement, vous devez indiquer à ce moteur de l'inclure. Ceci est différent pour chacun des msi/ClickOnce/etc.

0

Vous pouvez ajouter lentement les dépendances en aval en tant que références à votre projet. C'est lourd et un peu fragile

Ou vous pourriez utiliser un outil comme "Depends.exe" de Microsoft pour inspecter vos assemblées de haut niveau et obtenir une liste de référence aux dépendances.

Questions connexes