J'ai un projet C # dans Visual Studio, qui a Mais j'ai aussi besoin d'une bibliothèque de classe code> de ce projet pour une autre solution. P>
À l'heure actuelle, je dois changer le type de sortie à chaque fois, mais je me demande s'il est possible de générer Y a-t-il un Application de console code> comme type de sortie. P>
EXE code> et
dll code> au même
evoque " / code>? p>
événement post-build code> pour cela? p>
7 Réponses :
À ma connaissance, il n'est pas possible de modifier le type de sortie après la compilation. Cela étant dit, s'il serait possible d'avoir deux projets em> comme console em> et bibliothèque em> dans votre solution, qui utiliserait les mêmes fichiers de code source mais avoir des types de sortie différents. De cette façon, vous auriez des sorties différentes sans aucune duplication de code. P>
Codor et Doruk ont raison. Dans votre solution, ajoutez un projet de bibliothèque de classe et mettez-y presque tout ce lieu. Votre projet de console appellera simplement la DLL.
Convenu - refacteur pour amener le code commun de l'application de la console dans une DLL commune
Ok, je l'ai fait. Mon "demande de console" est sortie en tant que DLL. Comment puis-je obtenir un exe?
L'application de la console est le type de votre projet. Vous ne pouvez pas le changer. P>
Qu'est-ce que vous pouvez-faire - et vous devez porter votre logique dans un projet de bibliothèque de classe et utilisez votre bibliothèque de classe à partir de tout type de projet que vous souhaitez. P>
Bien sûr vous pouvez. Il suffit de regarder votre réglage de la solution sous l'onglet application code>. Il y a une boîte déroulante pour le type de sortie.
@Smartis, c'est étrange que je ne l'ai jamais remarqué. Peut-être parce que je n'en avais jamais besoin. Pourquoi avez-vous exactement besoin de cette fonctionnalité? Pourquoi voudriez-vous décider quoi obtenir (DLL ou EXE) pendant la construction? Peut-être que je peux aider si je savais. BTW, bien que la solution de Peter I fonctionnera, il vaut mieux se séparer de la logique et de l'interface utilisateur dans différents projets.
Il est généralement possible de faire référence à un ensemble d'EXE .NET, car ce serait une bibliothèque de classe.
Vous pouvez également vous arrêter de créer un fichier EXE et de référencer l'EXE (sonne étrange, mais fonctionne) dans votre autre Projet. P>
Il s'agit de la boîte de dialogue de navigation pour les références. Comme vous le voyez, vous pouvez sélectionner des fichiers EXE.
p>
mais comme commenté, cela dépend vraiment de ce que votre usecase est. Je ne recommande pas d'expédier un exe avec un point d'entrée à votre client en espérant que le client ne découvre pas l'EXE. Mais ce que vous pouviez faire à ce sujet est de compiler votre point d'entrée. P>
par exemple p> s'il y a une raison pertinente d'avoir une EXE expédiée et une bibliothèque de classe expédiée, je refacteur votre solution comme celle-ci: p> avec celui-ci, il est parfaitement clair pour que d'autres utilisent une application qui utilise la bibliothèque et la bibliothèque elle-même. P> P>
Bien que fonctionne, mais il ne sera pas recommandé car généralement, vous n'écoulerez pas l'EXE à vos clients. Plutôt le paquet ensemble ou seulement la DLL consommable
Je pense que c'est la bonne réponse. Un EXE est un assemblage qui se trouve avoir un point d'entrée.
Je pourrais être trompé, mais ne pouviez-vous pas simplement renommer l'extension de l'exécutable à la DLL et que le client ne soit pas le plus sage? Il serait alors simplement "regarder" comme une DLL mais avoir un point d'entrée (bien que le point d'entrée revienne juste immédiatement).
Vous devez compiler votre projet de devenir une DLL, puis utilisez cette DLL dans une application de console. P>
Une possibilité d'atteindre ce que vous voulez, c'est d'exécuter manuellement le MSBuild sur votre événement post-construit de votre projet. p>
Voir: Comment construire une solution de manière programmative en C # ? p>
ou Solution C # de bâtiment en mode de libération en utilisant MSBUILD .exe p>
Je ne suis pas vraiment sûr de savoir pourquoi les gens pensent que ce n'est pas possible, mais c'est réellement. P>
Le moyen le plus simple de renommer le Une autre manière utiliserait la ligne de commande Vous pouvez utiliser les options de ligne de commande de commande dans les événements de pré / post Cuild
0 commentaires
exe code> à
dll code> sonne stupide, je sais. Mais cela fonctionne dans de nombreux cas. En outre, comme «Peter I», un exemple .NET EXE peut être importé comme assemblage dans d'autres projets. Donc, vous n'avez peut-être pas vraiment besoin d'une DLL de toute façon. P>
c # code> comme indiqué ici: / out (Options C # Compiler) P>
La solution habituelle à utiliser utilise une solution avec deux projets: P>
principal code> appelle simplement certaines fonctions. li>
ul>
Pour plus d'informations, cochez la page page MSDN sur les solutions . < / p>
Codor a suggéré d'ajouter manuellement les fichiers au projet de console, mais un inconvénient est que les paramètres de construction ne sont pas partagés entre les deux versions, vous pourriez donc obtenir une certaine incohérence là-bas. P>
C'est ce que je fais et ma solution compile l'application "Console" dans une DLL. Je ne peux pas l'obtenir pour sortir un exe. Votre lien n'aide pas.
@HacksLash Posez une nouvelle question, fournissant suffisamment de détails sur votre configuration afin que nous puissions vous aider!
Mon problème était .NET CORE. Cela ne fonctionne pas comme vous l'attendez. Je ne le recommande pas pour une application de console.
J'ai une exigence similaire et je n'ai pas trouvé de réponse définitive dans ce poste ni n'importe où. J'ai actuellement une bibliothèque de classe et souhaitez créer un projet d'application de la console sans copier de code. Idéalement, il devrait y avoir deux projets, un pour créer une application de console et une autre pour créer une bibliothèque de classe. Et c'est ce que le studio visuel suggère également. Lorsque j'ai essayé d'exécuter la bibliothèque de classe, j'ai eu le message ci-dessous. P>
Il nous demande clairement d'ajouter un projet exécutable à la solution et d'ajouter la référence au projet de bibliothèque. P>
ci-dessous sont les étapes pour faire cela. P>
clic droit Solution -> Ajouter un nouveau projet -> Application de console -> Choisissez Nom -> OK. P>
Cliquez avec le bouton droit de la souris sur le projet de console -> Ajouter une référence -> In Référencier Manager, cliquez sur l'onglet Projets et sélectionnez l'autre projet (dans mon cas, il s'agit du projet de la bibliothèque de classe, au cas où il ne sera pas répertorié, cliquez simplement sur Parcourir. et sélectionnez le fichier .csproj) -> OK. P> blockQuote>
Maintenant pour utiliser les classes de l'autre projet, simple do
à l'aide de bibliothèqueProjectNamespace code> p>
là nous sommes. Bingo !!!! P>
aussi mentionné dans les autres réponses, il n'est pas possible d'avoir le même projet générer à la fois .exe et .dll. Mais vous pouvez avoir la même solution générer ces deux gars en ayant deux projets. De cette manière, il n'est pas nécessaire de changer la sortie du projet à chaque fois. code> p>
fyi, j'utilise Visual Studio 2017 P>
Avez-vous trouvé la chance de chercher Options de compilateur i>?