Problèmes lors de l'ajout d'un UserControl faisant référence à un wrapper C ++ / CLI à une dll non gérée dans un formulaire

StackOverflow https://stackoverflow.com/questions/817139

Question

My UserControl référence un wrapper C ++ / CLI à une dll non gérée C ++. Lorsque j'essaie d'ajouter UserControl à un formulaire, une erreur Visual Studio s'affiche: "Échec de la création du composant 'userControl'", ce qui donne comme cause une exception System.IO.FileNotFoundException.

D'après ce que j'ai pu déterminer, le problème provient du fait que Visual Studio n'a pas copié les dépendances non gérées de l'assembly de wrapper C ++ / CLI. Si je mets les dépendances non gérées sur le PATH du système, tout fonctionne correctement.

Y a-t-il une meilleure façon de faire cela?

Était-ce utile?

La solution

La solution la plus simple consiste à inclure le fichier .dll dans votre projet, à marquer son action de construction en tant que "Contenu", puis à définir le paramètre Copier vers le répertoire de sortie sur "Toujours". Cela devrait obtenir le fichier .dll dans votre répertoire de sortie pour que votre application puisse s'exécuter, et le simple inclusion du fichier dans le projet devrait le placer dans le répertoire du projet afin que le concepteur puisse le trouver.

Assurez-vous que votre projet d'installation inclut également une sortie de projet pour les fichiers de contenu de ce projet.

Modifier

Si cela ne fonctionne pas, vous pouvez également modifier les chemins de référence du projet lui-même (dans les propriétés du projet), bien que je ne sois pas certain que cela affectera le concepteur. Si ce n'est pas le cas, votre seule véritable option consiste à placer le fichier .dll dans l'un des répertoires du chemin d'accès au système.

Autres conseils

Ancien fil de discussion, mais soumission de ma solution car je viens tout juste de rencontrer le problème et de trouver cette question au cours du processus.

En gros, je viens de faire que les DLL natives soient chargées avec retard dans ma bibliothèque wrapper C ++ / CLI. Étant donné que la partie C ++ / CLI du wrapper contient les spécifications d'interface utilisées par Visual Studio et le framework, la DLL native n'est jamais nécessaire ni chargée. J'ai répondu avec un peu plus de détails dans cette question aussi: https://stackoverflow.com/a/15481687/34440

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top