2009-05-12 10 views
1

の中の.netコンパイル済みのDLLを使用すると、.NETプログラムがMSILにコンパイルされ、CLRに供給され、アセンブリコードにコンパイルされ、JITの助けを借りて実行されることを理解しています。ネイティブC++

.NETはWin32 APIのラッパーで、CLRは最終的にMSILをアセンブリプログラムに変換するので、私は不思議に思っていました。 C#でいくつかの機能を書いてdllを作ってから、CやC++のような管理されていないコードを使って完全な.net独立ファイルにするツールを使っていますか?

私はInteropsとCOMについて話していますか?このアイデアはそれと異なるのではないですか?私の目的は、.NETフレームワークを持たないマシンで.NET DLLを実行することです。

答えて

0

これはサポートされている方法ではなく、Reflectionのような多くの機能は、生のマシンコードよりも高いレベルで提供されるメタデータに依存しています。 .NETリンカと呼ばれるいくつかのプログラムがありますが、それは100%信頼できるものではありません。

1

Native Image Generator (Ngen.exe)を使用すると、MSIL DLLをネイティブコードDLLにコンパイルできますが、.NET Frameworkなしでシステムで実行することはできません。フレームワークの他のDLLへの参照が残っていて、これらのDLLをインクルードしても、フレームワークは単なるDLLの集合ではないため、.NETフレームワークなしでは動作しません。

+0

実際、ngenは実際のアセンブリの必要性を取り除くことはできません。アセンブリはILコード以上です。これにはまだ実行するために必要なメタデータが含まれています。 –

0

ウェブ上を突き進んだら、.NETアセンブリ/コードを「コンパイル」してフレームワークの必要性を取り除くためのツールがいくつかあると思います。彼らがどのくらいうまく動作しているかわかりません....

1

This KB articleは、ネイティブコードからマネージメソッドを呼び出す方法を説明しています。ただし、.NET Frameworkが必要です。

1

This project静的メソッドの.NETのアンマネージを行うことができます。

関連する問題