2008-09-24 4 views
8

J'appelle une DLL non.NET de mon projet à l'aide de P/Invoke, ce qui signifie que le fichier .dll doit toujours être présent dans le répertoire .exe.Spécification d'une dépendance non.NET dans Visual Studio

Est-il possible de dire à Visual Studio de cette dépendance, afin qu'il copiera automatiquement le fichier .dll dans le répertoire de sortie lors de la compilation, et inclura automatiquement le fichier .dll dans la configuration? Ou dois-je le faire manuellement?

Répondre

5

Vous pouvez copier/lier ce (s) fichier (s) au projet et, dans les fenêtres de propriétés, définir «Action de construction» sur «Aucun» et «Copier dans le répertoire de sortie» sur «Copier si plus récent» ou «Toujours copier».

Vous pouvez également utiliser des "événements de pré-construction" & "Événements de post-construction" dans lesquels vous pouvez spécifier des scripts de traitement par lots.

Je préfère la deuxième option, car cette méthode est plus flexible que la première.

Vous pouvez également modifier un fichier MSBuild et ajouter une tâche pour copier le (s) fichier (s).

+0

Merci, la première option est ce que je faisais - je me demandais s'il y avait un meilleur moyen – Grokys

8

Vous pouvez simplement ajouter le fichier .DLL à votre projet.

Sélectionnez le volet Properties pour ce fichier et mis Build Action à Content et Copy to Output Directory à Copy if newer.

+0

Construire Action = "Contenu" est meilleur que Construire Action = "Aucun" suggéré dans une autre réponse. C'est parce que vous pouvez facilement inclure des fichiers "Content" dans un projet d'installation. – Joe

+0

Oui, et c'est exactement pourquoi j'ai suggéré cela dans ma réponse. –

+0

> c'est exactement pourquoi j'ai suggéré que dans ma réponse Et pourquoi j'ai upvoted votre réponse :) – Joe

2

Je pense qu'un problème avec l'ajout d'un .DLL au projet est que vous pouvez avoir besoin de différentes versions d'une DLL pour les versions de débogage et de publication. Vous pourriez penser que vous pouvez ajouter à la fois des versions de débogage et de publication de la DLL au fichier, et en fonction des configurations, exclure la version inappropriée, mais je n'ai pas trouvé de moyen de le faire. J'utilise Visual Studio 2010. Je suis certain que cela a fonctionné dans l'ancien temps avec VS6.

+0

Vous pouvez modifier manuellement le fichier .csproj pour ajouter une condition au nœud de contenu de la DLL: Vous pouvez également utiliser une étape de préconfiguration pour copier MyDLL. Debug.dll ou MyDLL.Release.dll à MyDLL.dll en fonction de la configuration actuelle. (Je pense que vous devriez être capable de le faire via la page des propriétés du projet dans VS, en passant de Debug à Release) – bruceboughton

+0

Répondu ici http://stackoverflow.com/a/33436918/1889784 –