2009-03-11 5 views
6

Supposons que j'ai un projet C# Winforms, MainGUI.VS2008.NET: Copier les dépendances d'un projet référencé dans le dossier bin du projet principal

Il référence un autre projet dans la même solution, ControlsLib. ControlsLib fait référence à une suite de contrôle tierce, telle que les contrôles Infragistics ou Telerik, et expose un ensemble de contrôles utilisateur, utilisés dans MainGUI.

Copier Local est défini sur true sur toutes les références dans ControlsLib et toutes les DLL tierces apparaissent dans ControlsLib \ bin \ release.

Cependant, je ne peux pas obtenir la troisième DLL partie pour copier automatiquement MainGUI \ bin \ release, qui est le dossier dans lequel le programme d'installation du logiciel est généré (dans ce cas, en utilisant NSIS)

Par conséquent, les DLL de contrôle tiers ne sont pas inclus dans l'installation, ce qui conduit à une exception FileNotFoundException à l'exécution lorsque les contrôles de ControlsLib qui dépendent des DLL tierces sont utilisés.

Existe-t-il une façon «correcte» de le faire que je ne connais pas? Auparavant, je l'ai juste fait dans un script de construction nant en copiant des fichiers, mais je commence un nouveau projet et je voulais juste vérifier.

Merci

Répondre

2

Je viens résolu ce problème en ajoutant la ligne de commande d'événement post construction suivante dans le fichier .csproj pour MainGUI (propriétés du projet -> construire des événements)

copy $(SolutionDir)ControlsLib\bin\$(ConfigurationName)\Infragistics2*.dll $(TargetDir) 

Je ne l'avais pas réalisé le faire était si facile en fait ...

0

Vous devez ajouter un lien vers les fichiers nécessaires à partir du projet de l'interface utilisateur (MainGUI) et les mettre à copier dans le dossier de sortie de il. Les outils de conditionnement intégrés (IIRC) les mettent en cascade correctement, mais pour les outils externes, je pense que vous devrez le faire manuellement.

Sur mon serveur de construction, j'utilise un script qui étudie les références, et ajoute dans toutes les références descendantes juste avant sa construction (en éditant les fichiers csproj en tant que xml) ... le code n'est pas génial, mais le travail.

0

J'ai eu un problème similaire en utilisant Gentle.NET (O/R Mapper). L'une des DLL refuse de copier. J'ai enquêté pendant des heures et j'ai été incapable de trouver une raison. Tous les autres fichiers sont copiés, mais QUE est exclu pour une raison étrange. Gentle utilisé trois DLL, Gentle.Common.DLL, Gentle.Framework.DLL et Gentle.SQLProvider.DLL. Le dernier ne sera jamais copié.

En fin de compte, je tout simplement fait un script ...

0

Si vous modifiez les principales propriétés du projet (l'un exécutable) sur l'onglet Publier, l'option de fichiers d'application, vous serez en mesure de dire VS pour inclure tous les fichiers qui ne sont pas copiés.

Questions connexes