- - PR -
VisualStudio .NET での作成物は全てマネージコードになるのでしょうか?
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-07-04 14:08
こんにちは。みなさん。
現在、VisualStudio .NET 2002(以下、VS.NET)を利用して、 C# で色々なテストプログラムを作成しております。 その際、ふと疑問に思った点についてご相談させて頂きます。 ・作成したプログラムは全て .NET Frameworkが提供する クラス(System〜)を参照しているので、 利用するクライアントに .NET Framework がインストール されていないと動かない訳ですが、 ・こういったマネージコードしか VS.NET は生成出来ない 製品なのでしょうか? VS.NET でアンマネージコードは生成出来ないのでしょうか? ◆マネージコード http://www.atmarkit.co.jp/icd/root/18/21224318.html | ||||||||
|
投稿日時: 2003-07-04 14:38
VS.NETで、というより.NET Frameworkを利用する場合 それはマネージコードになります。 VS.NETでVC++を利用する場合、デフォルトでは.NET Frameworkを 使わない設定になっているかと思います。 この場合、作成されるのはアンマネージコード(というより ネイティブコード?)になります。 VC++でも.NET Frameworkを利用するようにしてアプリを 作成すれば、マネージコードになりますね。 | ||||||||
|
投稿日時: 2003-07-04 18:54
情報ありがとうございます。小野さん。 私の方でも Visual C++ や Visual Basic で 色々試してみました。 ご指摘の通り、Visual C++ 用のプロジェクトテンプレート の「Win32 プロジェクト」などでは、アンマネージコード として作成出来ました。
Visual C++ で「Managed C++ アプリケーション」などを 選べば、.NET Framework を利用したマネージコードが 作成出来るようですね。 若干、主題が変わりますが、 Visual C# ではアンマネージコードは 作成出来るのだろうか? 色々、試してみようと思います。 ありがとうございました。 | ||||||||
|
投稿日時: 2003-07-05 00:00
_
| ||||||||
|
投稿日時: 2003-07-05 00:02
unsafe keywordを調べてください。
必ずしも、C#=ManageCodeではないということを理解できると思います。 | ||||||||
|
投稿日時: 2003-07-05 01:12
マネージコードという言葉ってどうも2つの意味に取れてしまう事があって、 1.CLR上で動作する(ILになっている)コード 2.C#でいうunsafeを使用していないコード # 1.は Managed C++ とかではちょっと違うんですかね(詳しくないのですみません)。 # 2.は的確ではないかもしれませんが、説明が長くなりそう&うまく出来そうにないので # こう書きました。 私は、基本的に1.のように、CLR上で動作するものをマネージコードと呼び、 CLRを必要としないこれまでとおりのプログラムをアンマネージコードと呼ぶ感覚でした。 ところが、C#のunsafeの説明には、ポインタを使うコードはアンマネージコードと 書かれており、2.のものもアンマネージコードと呼んでいます。 結局のところ、これら2つの説明が入り乱れており、正確な定義がどちらなのかは 私にはよくわかりません。 で、.NET Framework が必要ないプログラムとか、C++での「Win32 プロジェクト」 を指してアンマネージコードといっている場合は、「C#では作成できない」となりますし、 単にunsafeであるという意味なら、そのとおり unsafe を使用することで出来ます。 ここでのアンマネージは、前者の意味と思いますので「C#ではできない」となります。 | ||||||||
|
投稿日時: 2003-07-07 18:24
なちゃさん、としさん、情報ありがとうございます。
Microsoft のサイトのサーチエンジンを使用して、 チェックしてみましたが、明確な記述は見つけられ ませんでした。 Microsoft Japan MSDN とりあえず、今回の質問の趣旨的には1番が該当するので、
と言う事が良く解りました。 C# を実装言語で利用する場合には、 .NET Framework が実行環境で必須という事ですね。 なちゃさん、としさん、大変参考になりました。 ありがとうございます。 | ||||||||
|
投稿日時: 2003-07-09 21:14
C#とVB.NETは、ネイティブなバイナリコードを直接生成できません。
必ずMSILによるマネージコードになります。 が、アセンブリ(DLL)に関して言えば、条件付きでネイティブバイナリコードを 生成出来ます。 ・アセンブリに厳密名が付いていること ・gacutil を使用してグローバルアセンブリキャッシュにアセンブリをインストール する過程でネイティブバイナリコードを生成する このため、生成されたネイティブバイナリコードを配布することは出来ません。 詳しくは本サイトの「インサイド.NET Framework」を読まれると判ると思います。 |