Application Console Win32 vs Console CLR app
Je suis en train de travailler sur un projet C++ que je n'ai pas l'intention de les développer ou de les déployer à l'aide .NET des bibliothèques ou des outils, ce qui signifie qu'il serait logique pour moi de le créer à l'aide de Visual Studio Win32 Console application. Cependant, j'ai entendu dire que les capacités de débogage lors de l'utilisation d'un CLR application sous Visual Studio sont beaucoup plus puissants. J'ai donc quelques questions:
-
Est-il vrai que le fait d'avoir un CLR app vs une application Win32 ajoute des capacités de votre processus de développement, même si vous n'avez pas utiliser n'importe quel .NET bibliothèques ou d'autres ressources?
-
Si oui, aurais-je encore être en mesure de développer/compiler le projet en tant que CLR projet afin de profiter de ces même si j'avais l'élaboration d'un projet C++ pur à l'aide de STL, etc. et pour ne pas profiter de tout .NET de la fonctionnalité? Ou serait-ce un projet requiert-il des différences fondamentales qui le rendrait non-trivial de revenir en arrière, ce qui signifie que je devrais rester avec une application console Win32?
Vous devez vous connecter pour publier un commentaire.
Bas de ligne de la réponse, si vous n'êtes jamais à l'intention d'utiliser le CLR ou tout .Net objets dans votre application, il suffit d'utiliser un Win32 normale de la bibliothèque C++. Faire quelque chose d'autre va vous causer de la douleur en bas de la route.
Maintenant, pour répondre à la question initiale sur le débogage, oui débogage avec le CLR a certains avantages sur le débogage normal C++ application. À partir de Visual Studio 2005, C# et VB.Net a commencé à se concentrer sur la fabrication de la variable d'affichage dans les locaux /autos /watch fenêtre de beaucoup plus précieux. Il a été fait principalement par le biais de l'introduction de .Net des attributs tels que DebuggerDisplay, DebuggerTypeProxy et le visualizer cadre.
Si vous n'utilisez pas tout .Types de réseau, vous obtiendrez aucun de ces avantages.
Le C++ évaluateur d'expression ne permet pas de profiter de l'un de ces. Il a ses propres méthodes de personnalisation de l'affichage du type de. Mais ce n'est pas comme plein de fonctionnalités (ou potentiellement dangereux) que l'attribut de style car elle ne permet pas à l'exécution du code dans le debugee processus.
Qui ne veut pas dire que le débogage C++ fournit une mauvaise expérience. Il est simplement différent et il y a un meilleur affichage pour de nombreux STL types de conteneurs.
Débogage d'un CLR application dispose également d'certaines disadvantegs. Par exemple, le débogage de code optimisé est pratiquement impossible, à la fois parce que le JITer permet de masquer les variables locales, paramètres et souvent "ce". Débogage d'un même construit C++ application peut également être frustrant, mais vous pouvez toujours prendre les registres et dissamebly pour voir ce qu'il se passe. En faisant de même pour un CLR application est difficile, au mieux.
Je pense que la compilation du code C++ natif dans CLR ouvre toute une boîte de pandore. Sauf si vous avez de gros investissements sur le code C++ existant et une nécessité pour exécuter du code avec les types gérés, c'est quelque chose que vous voulez éviter.
Par exemple, C++/CLI est une façon de bundle native code C++ à droite dans un assembly CLR, mais le C++/CLI ajoute non-standard de la syntaxe de C++ le langage, et à l'aide de C++ natif types mélangés avec les types gérés semble être une très délicate question pour dire le moins.
Donc, en conclusion, je voudrais juste garder comme une application native. Si vous avez un plan de portage CLR et vous venez de commencer à travailler sur ce projet, je pense sérieusement que de commencer à écrire dans un CLR-langue maternelle comme en C#.
Cette réponse copié à partir d'ici - http://social.msdn.microsoft.com/Forums/vstudio/en-US/895ecb47-8b34-4a1a-a20b-fda1e5e576eb/whats-the-difference-between-clr-console-application-and-win32-console-application
Quelle est la différence entre CLR application console win32 console application?
- Le premier utilise Common Language Runtime (en d'autres mots, .NET framework); le second ne l'est pas.
et je ne peut pas utiliser l'espace de noms du Système, en vertu de l'application console win32 modèle.
- Espace de noms System est une partie de .NET framework.
Que dois-je faire lorsque je veux utiliser l'espace de noms?
- Vous devez écrire un .NET application.
et Ne pas avoir d'entrée de l'indice comme dans le modèle C#?
- Il n'y a en effet pas d'IntelliSense pour le C++/CLI dans les versions de Visual Studio. Si vous voulez une .NET application, C# peut-être un meilleur choix de la langue.