1

古い質問: IL (.NET) コードを含む .exe (PE) があります。開始されると、mscorlib.dll (.NET フレームワーク) 関数が呼び出されて IL コードが開始されます。.NET コード セグメントを抽出し、それを他のプログラム (mscorlib.dll を呼び出してそのセグメントを実行するプログラム) に追加できますか?

新しい質問:

C# .NET プログラムからのコンパイル済みコードを、.NET ランタイムなしで実行できるネイティブの純粋な Win32 アプリケーションに追加し、.NET が存在する場合は mscorlib.dll の関数を動的に呼び出して実行したいと考えています。これは、ネイティブ コンパイルではなく、「実行可能ジョイナー」テクニックのようなものです。

.NET .exe を一時ディレクトリに書き込んで実行したくありません。それはすでに行われており、ファイル内の.NETコードで.NET vmを直接呼び出して一時フォルダーを削除したい(見つかった構造/セッションのオフセットを与えるか、正しいPE .section名を割り当てるだけで-知っているだけ) PortableExecutable 形式について少し説明します)。

参照: http://webcache.googleusercontent.com/search?q=cache:u9tTX2sfkhAJ:social.msdn.microsoft.com/Forums/en/clr/thread/2677c0b6-6b3c-4a51-9fcc-c2d8838c7b8b+compiled+IL

4

4 に答える 4

1

C++ アプリで CLR ランタイムをホストし、ホストされた環境でメソッドを呼び出すことができます

Jeff Richter には例があります

于 2010-10-05T23:21:55.557 に答える
1

Windows SDK で提供される COM API を使用して、ネイティブ プロセス内で CLR をホストできます。IIS、SQL Server、およびその他のいくつかの製品は、まさにそれを行います。実際、理論的には IIS からの要求を処理する ASP.Net の独自の代替を作成できます。しかし、私は共有する経験がありません。以下のリンクを確認してください。

http://msdn.microsoft.com/en-us/magazine/cc163567.aspx
http://msdn.microsoft.com/en-us/library/9x0wh2z3%28VS.90%29.aspx

于 2010-10-07T05:07:49.930 に答える
1

おそらく、.NET ライブラリと参照アセンブリを取得し、.NET をインストールしなくても実行できる実行可能ファイルまたは .dll を作成するリンカーを探していると思います。

このための 2 つの商用オプションは次のとおりです。

monoでも可能です。プリコンパイルして依存関係を追加するmkbundleというユーティリティがありますが、動作させるには Cygwin ともう少し専門知識が必要です。この質問は良いスタートのようです: Mono と mkbundle を使用して、単純な .Net コンソール プロジェクトを移植可能な exe に変換する方法は? .

于 2010-10-10T14:39:17.320 に答える
0

VS はこれを明示的にサポートしていませんが、.Net では、.dll アセンブリと同じ方法で .exe アセンブリ jst を参照し、パブリック クラスを呼び出すことができます。

もちろん、呼び出す必要があるコードがプライベートまたは内部の場合、それを機能させるためにリフレクションに頼らなければならない場合があります。

ILMerge実際にコードを .dll に移動する必要がある場合は、 1 つのバイナリを作成してみることができます。ただし、ILMerge別の .exe アセンブリを参照するアセンブリでの使用は試していません。

于 2010-09-07T18:01:59.267 に答える