12
votes

Projet Visual Studio Construire comme exécutable et une DLL

Dans les propriétés du projet Visual Studio 2008, onglet Application, je peux définir le type de sortie sur l'application Windows, l'application de la console ou la bibliothèque de classe. J'ai un projet que je souhaite construire comme outil autonome (Console app) et être disponible pour quelques autres outils que je travaille dans une bibliothèque de classe.

L'interface graphique VS ne me permet que de choisir l'un ou l'autre et construire le proj deux fois tout le temps est gênant.

Comment puis-je le configurer pour créer les deux types de sortie dans un seul travail de construction? Dois-je écrire un fichier personnalisé Msbuild .Targets ou quoi?


1 commentaires

Problème connexe, la priorité inférieure teste mon outil; Si j'utilise les tests de l'unité de Visual Studio de Visual Studio Pour générer un projet de test, il se termine légèrement différemment selon que le projet principal a été défini sur l'application de la console ou la classe LIB à Le temps, de sorte que la commutation de la principale proj de retour et de tout allait alternativement la construction du projet de test. Boiteux.


5 Réponses :


4
votes

créer deux projets distincts, un pour votre application de console et une pour la bibliothèque de classe. Définissez le type de sortie approprié pour chacun.

N'oubliez pas d'ajouter une référence à votre bibliothèque de classe à votre projet d'application de console.


0 commentaires

18
votes

Si je ne me trompe pas, vous pouvez utiliser l'exe comme une bibliothèque de classe.
Il suffit d'ajouter une référence à celle-ci dans les autres projets. Un exemple .net n'est qu'un assemblage.


0 commentaires

3
votes

Vous ne pouvez pas compiler à la fois à un EXE et à une DLL. Si un assemblage est traité comme un EXE ou une DLL est déterminé par un seul drapeau de bits dans l'en-tête exécutable portable du fichier (voir http://msdn.microsoft.com/en-us/magazine/cc3301805.aspx Pour plus d'informations). Ce drapeau ne peut pas avoir les deux valeurs.

Ce que vous pouvez faire pour satisfaire votre besoin est de Ajoutez une référence à votre EXE . Vous ne pouvez pas faire cela dans certaines versions de Visual Studio (2005 et ci-dessous) car l'interface utilisateur ne vous laissera pas vous laisser, mais vous pouvez guider le fichier de projet pour ajouter la référence. Les versions ultérieures de Visual Studio vous permettent d'ajouter des références aux fichiers EXE à l'aide de l'interface utilisateur.


1 commentaires

Ce drapeau de bit signifie qu'un seul fichier ne peut pas être à la fois une DLL et une .exe, c'est évident. Mais une version .NET ne peut-elle pas avoir plus d'une cible de construction? Cela me semble poisson et si c'est vrai que ce serait une énorme limite de Msbuild (alors peut-être que j'avais besoin d'apprendre Nant ...)



5
votes

Vous pouvez construire la DLL par défaut et créer une autre cible à charge simplement une application de console de wrapper qui utilise la DLL.


0 commentaires

4
votes

Je pense que la solution la plus simple est de construire en tant que EXE, puis d'avoir une action post-construction qui copie l'EXE dans une DLL. Il n'y a pas de différence réelle entre les deux en .net.


0 commentaires