2014-05-04 2 views
0

Situation: Une application intégrée dans plusieurs variantes, avec différentes fonctionnalités activées. Chaque variation a son propre projet principal, avec son propre dossier de sortie "bin". Appelez les variantes A et B.Solution Visual Studio 2010 - comment copier exe commun à deux projets principaux?

Il existe plusieurs bibliothèques de classes communes qui génèrent des DLL. Ceux-ci sont automatiquement copiés dans les deux dossiers de sortie. Cela fonctionne bien.

Maintenant, ajoutez un autre projet. Il génère un exe, C.exe. Il sera chargé en tant que processus séparé par l'application. (Il crée un NamedPipe, fournissant un ServiceContract via NetNamedPipedBinding.)

Lorsqu'il n'y avait que «A» (pas de «B»), j'ai simplement demandé à A et C de spécifier le même dossier de sortie. Mais maintenant, il y a DEUX endroits où C doit aller. Pour la version Debug, doit aller à A/bin/Debug et B/bin/Debug. Similaire pour Release build.

La langue source est VB, mais une réponse basée sur des projets C# serait presque certainement adaptable à ma situation. J'ai écrit une réponse à l'aide de XCopy dans Post Build Events. J'ai écrit une réponse à l'aide de XCopy.

Vous cherchez des réponses alternatives.

Y a-t-il un moyen qui est plus facile à maintenir/ne dépend pas de la saisie manuelle des chemins? Ma préoccupation est que lorsque des variantes sont ajoutées ou déplacées, il est nécessaire de connaître les événements de construction et de les éditer manuellement.

Faire du travail pour une entreprise qui n'est pas à même de suivre ces détails au fil des ans. Vous cherchez un moyen qui est moins susceptible de se casser, ou plus facile à maintenir pour un programmeur junior.

Répondre

0

Dans le projet "C", Propriétés, Événements post-construction, utilisez xcopy pour copier le fichier .exe et le fichier .pdb correspondant. Pour ce faire, tant pour la configuration "Debug" et la configuration du projet C.

"Release" (VB, cela est sous l'onglet Compile, bouton "Construire des événements ..." en bas à droite.)

Dans Propriétés du projet A, recherchez son chemin de sortie. dans ce cas, le chemin spécifié était bin\x86\Debug\. xcopy doit être dit à ce chemin, par rapport au projet A à l'intérieur de la solution; cela devient $(SolutionDir)\A\bin\x86\Debug\. Les lignes résultantes, de copier à la fois l'exe et son pdb pour le débogage:

xcopy /y "$(ProjectDir)$(OutDir)*" "$(SolutionDir)\A\bin\x86\Debug\" 

Cette copie tous les fichiers dans le dossier de sortie de « C » à « A » du dossier de sortie. Avant d'ajouter cette ligne, examinez le dossier de sortie de "C". Y a-t-il des fichiers qui ne devraient pas être copiés dans A? Si oui, peuvent-ils être supprimés? (Et vont-ils RESTER supprimé, lorsque vous reconstruisez "C"?) Sinon, vous devrez spécifier plus soigneusement les fichiers source, dans la ligne xcopy. Ou utilisez plusieurs lignes xcopy pour spécifier les fichiers individuels.

Notez le "A", qui est le projet principal en cours de copie. Répétez cette ligne pour "B". À mesure que d'autres variantes du projet principal sont créées, ajoutez-y également une ligne.

Si un projet spécifie un chemin de sortie différent, les lignes doivent être modifiées en conséquence.

Questions connexes