Y a-t-il une manière rapide et sale (ou une macro VS) pour convertir une application WinForms vers une application de console? J'ai un certain nombre de ces applications qui ne sont plus nécessaires comme des applications WinForms. Je suppose que je pourrais créer un groupe de nouveaux projets et copier des modules et des classes de coller, mais s'il s'agit simplement d'éliminer la forme unique que j'ai et que j'ai monté / supprimer quelques choses, je préfère faire cela. P >
5 Réponses :
Non, il n'y a pas. Il est extrêmement dépendant de la manière dont le programme a été écrit à l'origine. Si le programmeur d'origine a rendu le système assez modulaire, cela ne devrait pas vous prendre trop longtemps. Si toute la logique est dans le code WinForms-derrière, vous avez du travail sérieux à faire. P>
C'est la programmation manuelle / refactoring travail. P>
C'est la réponse la plus réaliste, l'informative et la plus pratique donnée des 3 jusqu'à présent.
Ce n'est pas réaliste si vous devez modifier plus de 50 applications comme je l'ai fait.
Vous pouvez modifier les paramètres du projet pour créer une application de console au lieu d'une application Windows (il suffit d'appuyer sur Ctrl + Entrée sur le projet dans la fenêtre Solution et de faire ce changement). P>
Cela compilera la demande en tant qu'application de la console et vous obtiendrez une console. Cependant, vous obtiendrez toujours vos formulaires. Si vous souhaitez avoir des formulaires Windows, vous devez supprimer les formulaires et remplacer leur fonctionnalité avec des arguments de ligne de commande ou de la configuration. Vous pouvez ensuite supprimer les références des formulaires Windows, et ce sera converti. P>
@Heath: C'est pourquoi j'ai dit, en particulier, qu'il aurait besoin de remplacer la fonctionnalité de formulaire avec des arguments ou de la configuration de la ligne de commande. Je ne suggérais jamais qu'il s'agisse d'un processus automatique - mais il s'agit plutôt des étapes requises pour convertir les formulaires de formulaire à la console, que je ressens est de 100% précis.
@Roseau. Votre réponse fait semblant de changer le fichier EXE est un gros morceau du travail. En fait, c'est un cadre trivial qui accomplit très peu. Ensuite, vous avez une clause de langue anglaise indiquant qu'il devra "remplacer leurs fonctionnalités". Ouais, et ce sera 99,9999% de l'effort. Pendant ce temps, à la suite de vos conseils et de meilleurs conseils d'Amissico, il a détruit son projet VS existant ...
@Roseau. En réponse à la question de Otaku, "Y a-t-il un bouton qui fait cela pour moi" la réponse est "non, et vous devez arrêter de penser comme ça." Votre réponse est essentiellement «Oh, oui, vs s'occupe de cela pour vous et vous laisse seulement une quantité mineure de travail restant ...» qui est ridicule.
@Heath: Vous pouvez être en désaccord avec moi, mais je n'ai pas édité cela, car je sent toujours que c'est la réponse la plus complète ici. Les conseils d'Amissico sont à la main Modifier le projet VS - cela va être beaucoup plus susceptible de détruire le fichier de projet de manière totalement négligeable dans VS que d'utiliser les outils de VS pour apporter les modifications. Vous n'êtes pas obligé d'être d'accord avec moi, cependant, puisqu'on n'est pas un concours de popularité;)
@Heath: Je n'ai jamais rien dit d'être mineur. Si le formulaire ne fait rien, mais affichant un message, oui, c'est mineur. Si les formulaires font beaucoup de travail, ce n'est pas le cas. Cela dépend vraiment du projet en question.
@Heath: Je suggérerais également de relire la question de @ Otaku en totalité. Il n'a jamais demandé un "bouton unique" pour le faire - et son libellé indique clairement qu'il réalise qu'il aura besoin de supprimer le formulaire et de modifier une partie de son code.
@Reed, merci de la permission de ne pas être d'accord avec vous. Sans votre permission, je serais à une perte complète sur la façon dont je devrais ressentir.
@Reed, il a écrit «Quick and Dirty Way». Ainsi, par implication, le réglage du projet que vous avez souligné est une étape "rapide et sale" sur le chemin à faire. Mais c'est une étape stupide. Amissico suggère de modifier la main du projet VS résultant, qui ne nuira pas au projet existant. Donc, oui, sa réponse, sans le meilleur, est supérieure à la vôtre.
+1, c'est la bonne réponse bien sûr. Le OP sait déjà qu'il doit remplacer l'appel de l'application.Run.
@Reed Copsey: C'est ce dont j'avais besoin. Mon empreinte WinForms est vraiment faible (juste un formulaire comme mentionné ci-dessus), donc ce sera probablement le plus facile.
Quand je devais faire cela, je crée un projet vierge et une console vierge puis comparé les différences. Les différences sont mineures. J'ai ouvert tous les projets sous forme de fichiers XML dans Visual Studio, puis a effectué une recherche et remplacer selon les besoins en fonction des différences. Bien travaillé. P>
J'ai ensuite ouvert chaque projet et corrigé toutes les erreurs, telles que la méthode d'entrée d'entrée manquante, etc. p>
En outre, vous pouvez enregistrer une macro temporaire pour faire certaines des choses mondaines. P>
Les différences de fichiers de projet entre une application "Formulaires Windows" et "Console" sont mineures. Peut-être que j'aurais dû utiliser le travail Tout ce que vous avez à faire est de modifier Je devais faire cela avec plus de 50 applications pour un client. Un consultant leur a dit que cela prendrait une semaine pour faire les changements. J'ai dit à mon client que je pouvais le faire dans une heure et sur place. La partie difficile de ce travail était bloquée dans la circulation. P>
J'ai ouvert tous les fichiers de projet sous forme de XML, puis modifié le J'ai créé une macro qui ajouterait un module vb.net "programme" et une autre pour une classe C # avec le point d'entrée "principal" nécessaire et le code d'exécution de l'application. p>
Une fois à ce stade, j'ai écrit un petit programme qui chargerait chaque projet dans Visual Studio 2008. J'ai exécuté la macro appropriée selon que le projet était VB.NET ou C #. Je corrigerais toutes les erreurs, compiler, exécuter l'application, puis fermer. Le petit programme avec puis lancez un autre studio visuel avec le prochain projet. La partie la plus difficile de l'utilitaire obtenait les chemins de tous les projets car je devais utiliser DOS, comme dans Si l'OP n'a qu'une poignée de projets, je vous suggère d'ouvrir chaque projet et de faire les modifications nécessaires. P>
J'ai utilisé une technique similaire pour convertir environ 20 Projets Wince / Winforms & Console / VB.NET à des projets de bureau / Winforms & Console / VB.NET / VB.NET, où j'ai dû convertir des fichiers de projet et former des différences majeures, en particulier les fichiers de formulaire. < / p>
À mon avis, vous avez besoin d'alléger. Aucun de cela ne concerne dix minutes à partir de maintenant. P>
OutputType CODE> et
StarTupObject code> dans les fichiers de projet à l'aide de la recherche-et-là "dans les documents ouverts". P>
Dir / B / S * .vbproj> c: \ project_listing.txt code>. P>.
dans Visual Studio 2015, sous le projet
Très gênant, commutation Type de sortie Strong> à partir de Pour obtenir cette fonctionnalité Back Modifier le fichier .CSPROJ de projet et ajouter P> au groupe de propriétés. Votre fichier .csproj peut alors ressembler à ceci: p> Explication de Microsoft P> P>
Plutôt que de copier / coller les fichiers de classe dans le nouveau projet, je envisagerais de les copier / coller dans un nouveau projet de bibliothèque de classe, de sorte que vous puissiez la réutiliser dans n'importe quel type de projet ultérieurement.