Frage

Ich arbeite an einem C ++ Projekt, das ich nicht die Absicht, mit .NET-Bibliotheken oder Werkzeugen zu entwickeln oder bereitstellen, was bedeutet, wäre es sinnvoll für mich mit einer Visual Studio Win32-Konsole-Anwendung zu erstellen. Ich habe jedoch gehört, dass die Debugging-Fähigkeiten, wenn eine CLR-Anwendung unter Visual Studio sind viel leistungsfähiger werden. Also ich habe ein paar Fragen:

  1. Ist es wahr, dass ein CLR-App mit im Vergleich zu einem Win32-App-Funktionen zu Ihrem Entwicklungsprozess hinzufügt, auch wenn Sie alle .NET-Bibliotheken oder andere Ressourcen nicht nutzen?

  2. Wenn ja, würde ich noch in der Lage sein, das Projekt als CLR-Projekt zu entwickeln / kompiliert Vorteil davon zu nehmen, obwohl ich eine reinen C ++ Projekt mit STL würde die Entwicklung, usw. und nicht unter Ausnutzung von jede .NET-Funktionalität? Oder wäre ein solches Projekt erfordert grundlegende Unterschiede, die es nicht trivial machen würde wieder zurückkehren, was bedeutet, ich mit einem Win32-Konsole app bleiben sollte?

War es hilfreich?

Lösung

Unterm Strich Antwort, wenn Sie beabsichtigen, nie die CLR oder .NET-Objekte in Ihrer Anwendung zu verwenden, benutzen Sie einfach eine normale Win32 C ++ Bibliothek. Etwas anderes zu tun führen, dass Sie Schmerzen die Straße hinunter.

Nun, um die ursprüngliche Frage zu dem Debuggen zu beantworten, ja das Debuggen mit dem CLR hat gewisse Vorteile gegenüber einem normales C ++ App debuggen. Beginnend mit Visual Studio 2005, die beide C # und VB.Net darauf, die variable Anzeige in den Einheimischen / Autos zu konzentrieren begann / watch Fenster viel wertvoller. Es war vor allem getan durch die Einführung von .NET-Attribute wie DebuggerDisplay, DebuggerTypeProxy und Visualizer Rahmen.

Wenn Sie .NET-Typen nicht, obwohl verwenden, werden Sie keine dieser Vorteile erhalten.

Die Ausdrucksauswertung C ++ nicht Vorteil eines dieser nehmen. Es hat seine eigenen Methoden der Anzeige anpassen. Aber es ist nicht so featureful (oder potenziell gefährlich) als Attribut Stil, weil es nicht zulässt Code im debugee Prozess ausgeführt.

Das ist nicht das Debuggen C zu sagen ++ eine schlechte Erfahrung bietet. Es ist nur anders und es gibt bessere Displays für viele STL-Container-Typen.

Debuggen einer CLR App hat auch bestimmte disadvantegs. Zum Beispiel Debuggen optimierte Code ist fast unmöglich zu Zeiten, da die JITer lokale Variablen verstecken, Parameter und oft „this“. Debuggen einer ähnlich aufgebauten C ++ App kann auch frustrierend sein, aber man kann immer die Register greifen und dissamebly, um zu sehen, was los ist. Dadurch könnte die gleiche für einen CLR-App ist bestenfalls schwierig.

Andere Tipps

Ich denke, Kompilieren native C ++ Code in CLR eine ganze Dose Würmer öffnet. Es sei denn, Sie große Investitionen auf vorhandenen C ++ Code und einige Notwendigkeit haben Sie den Code mit verwalteten Typen zu laufen, ist dies etwas, was Sie vermeiden wollen.

Zum Beispiel, C ++ / CLI ist eine Möglichkeit, native C zu bündeln ++ Code direkt in eine CLR-Assembly, aber C ++ / CLI fügt Nicht-Standard-Syntax der Sprache C ++, und mit nativen C ++ Typen gemischt mit verwalteten Typen scheint wie eine sehr heikle Frage gelinde gesagt.

So, zum Schluss, ich würde es einfach weiter als native App. Wenn Sie einen Plan haben, es zu CLR portiert und Sie haben gerade erst begonnen Arbeit an diesem Projekt, würde ich ernsthaft darüber nachdenken Start schriftlich in einer CLR-Muttersprache wie C #.

Diese Antwort von hier kopiert - http://social.msdn.microsoft.com/Forums/vstudio/en-US/895ecb47-8b34-4a1a-a20b- fda1e5e576eb / was-den-Unterschied-zwischen-clr-Konsole-Anwendung-and-win32-Konsole-Anwendung

Was ist der Unterschied zwischen CLR-Konsolenanwendung und win32 Konsolenanwendung? - Der ehemalige verwendet Common Language Runtime (in anderen Worten, .NET-Framework); letztere nicht.

und ich kann using namespace System unter dem Win32-Konsolenanwendung Modell nicht. -. Namespace System ist ein Teil von .NET Framework

Was soll ich tun, wenn ich will den Namensraum benutzen? -. Sie sollten eine .NET-Anwendung schreiben

und Ist es nicht Eingang Hinweis wie in C # Modell hat? - Es gibt in der Tat keine IntelliSense für C ++ / CLI in den bestehenden Versionen von Visual Studio. Wenn Sie eine .NET-Anwendung möchten, können C # eine bessere Sprach Wahl sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top