質問

.NETライブラリまたはツールを使用して開発または展開するつもりのないC ++プロジェクトに取り組んでいます。つまり、Visual Studio Win32コンソールアプリケーションを使用して作成するのが理にかなっています。ただし、Visual StudioでCLRアプリケーションを使用する場合のデバッグ機能ははるかに強力であると聞いています。そこで、いくつか質問があります:

  1. .NETライブラリやその他のリソースを利用しない場合でも、CLRアプリとWin32アプリを使用すると開発プロセスに機能が追加されるのは本当ですか?

  2. もしそうなら、STLなどを使用して純粋なC ++プロジェクトを開発し、利用しない場合でも、プロジェクトをCLRプロジェクトとして開発/コンパイルしてこれらを利用できますか? .NET機能はありますか?または、そのようなプロジェクトには、元に戻すのが簡単ではない根本的な違いが必要ですか?つまり、Win32コンソールアプリに固執する必要がありますか?

役に立ちましたか?

解決

一番下の答えは、アプリケーションでCLRや.Netオブジェクトを使用するつもりがない場合は、通常のWin32 C ++ライブラリを使用するだけです。他に何かをすることは、あなたに道を痛めさせます。

今、デバッグに関する元の質問に答えるために、はい、CLRを使用したデバッグには、通常のC ++アプリのデバッグよりも特定の利点があります。 Visual Studio 2005以降では、C#とVB.Netの両方が、変数をlocals / autos / watchウィンドウに表示することの価値を高めることに注力し始めました。これは主に、DebuggerDisplay、DebuggerTypeProxy、およびビジュアライザーフレームワークなどの.Net属性の導入を通じて行われました。

.Netタイプを使用しない場合、これらの利点はありません。

C ++式エバリュエーターは、これらのいずれも利用しません。タイプ表示をカスタマイズする独自のメソッドがあります。ただし、debugeeプロセスでコードを実行できないため、属性スタイルほど機能的(または潜在的に危険)ではありません。

C ++のデバッグが貧弱な体験を提供すると言うわけではありません。単に異なるだけであり、多くのSTLコンテナタイプの表示が改善されています。

CLRアプリのデバッグにもいくつかの欠点があります。たとえば、JITerはローカル変数、パラメーター、および多くの場合「this」を非表示にするため、最適化されたコードのデバッグはほとんど不可能です。同様に構成されたC ++アプリのデバッグもイライラする可能性がありますが、いつでもレジスタを取得して、何が起こっているのかを確認することができます。 CLRアプリに対して同じことを行うのは、せいぜい難しいことです。

他のヒント

ネイティブC ++コードをCLRにコンパイルすると、大量のワームが発生すると思います。既存のC ++コードに大きな投資があり、マネージ型でコードを実行する必要がある場合を除き、これは避けたいものです。

たとえば、C ++ / CLIはネイティブC ++コードをCLRアセンブリに直接バンドルする方法の1つですが、C ++ / CLIは非標準の構文をC ++言語に追加します。控えめに言っても問題。

したがって、結論として、私はそれをネイティブアプリとして保持します。 CLRに移植する予定があり、このプロジェクトの作業を始めたばかりであれば、C#のようなCLRネイティブ言語で書き始めることを真剣に考えます。

この回答はここからコピーされました- 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

CLRコンソールアプリケーションとwin32コンソールアプリケーションの違いは何ですか? -前者は共通言語ランタイム(つまり、.NETフレームワーク)を使用します。後者はサポートしていません。

そしてwin32コンソールアプリケーションモデルでネームスペースシステムを使用できません。 -システム名前空間は.NETフレームワークの一部です。

名前空間を使用する場合はどうすればよいですか -.NETアプリケーションを作成する必要があります。

そしてC#モデルのような入力ヒントがありませんか? -Visual Studioの既存のバージョンには、実際にはC ++ / CLI用のIntelliSenseはありません。 .NETアプリケーションが必要な場合は、C#の方が適切な言語選択になる可能性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top