問題タブ [ngen]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2559 参照

visual-studio-2010 - NGEN されたアセンブリが読み込まれない

アセンブリを NGEN する場合とそうでない場合のパフォーマンスへの影響を測定しようとしていますが、実行可能ファイルに NGEN アセンブリをロードさせることができません。VS2010 コマンド プロンプトから次のコマンドを実行しました。

これは問題なく完了し、すべての依存関係アセンブリが C:\Windows\assembly\NativeImages_v4.0.30319_32\MyCompanyName# ディレクトリに作成されていることを確認しました。

その後、アプリを起動して Process Explorer を見ると、NativeImages_x フォルダーから *.ni.dll ファイルを読み込むのではなく、ローカル バイナリ ディレクトリからすべてのアセンブリを読み込んでいました。fuslogvw を使用してバインディングをログに記録しました。サンプル ログ エントリは次のとおりです。

ここで何が起こっているのかについて考えている人はいますか?問題のネイティブ アセンブリが次の場所に存在することを確認しました。

正しくバインドされていないのはなぜですか?FWIW、アプリケーションは MEF をかなり使用します。それがアセンブリの読み込みに影響するかどうかはわかりません。

0 投票する
2 に答える
304 参照

.net - ネイティブ コードの生成

.Net 4.0 でのネイティブ コード生成は初めてです。私のプロジェクトでは、1 つの EXE ファイルに対して合計 500 以上の DLL ファイルがあります。ngen.exe インストールを使用してこれらすべての DLL のネイティブ イメージを作成する必要がある場合、それは大きなプロセスになります。したがって、私の質問は、これらすべての DLL ファイルのネイティブ イメージを作成するためのツールまたはスクリプトがあるかどうかです。この問題で私を助けてください。

前もって感謝します。、

0 投票する
4 に答える
696 参照

c# - ngen.exeを使用してカーネルをコンパイルする

CosmosとSharpOSが独自のコンパイラを作成してC#からバイナリコードを構築していることは理解していますが、Microsoftの.NET AOTを使用して同じことを行うことはできますか?C#をx86にコンパイルします。ステートメントを含める場合は、OS開発のように、ステートメントの使用を省略しなければならないと思います。フィードバックをいただければ幸いです。ありがとう

編集:カーネル開発でC#を使用したい主な理由は、マネージコードがもたらすメモリ管理、特に単一のアドレス空間プロパティのためです。JITコンパイラを起動してから、C#をコンパイルする必要がありますか?それとも、その時点で環境はまだ機能不全に陥っていますか?フィードバックをありがとう

0 投票する
1 に答える
660 参照

.net - .Netネイティブイメージを検査/分解します

.Net JITer / ngenによって生成されたネイティブコードを逆アセンブル/検査することは可能ですか?(純粋に学術的な目的のために)

この質問に答えようとすると、JITerがどのような最適化を実行するのか興味をそそられました。大げさに推測するのではなく、実際に何が起こっているのかを自分で確認できるようにしたいと思います。

これまでのところ:

  1. ngenを使用して候補アセンブリのネイティブイメージをインストールしました(これの出力は、JITコンパイラの出力とは異なる可能性がありますか?)
  2. GACからネイティブイメージをコピーしました

しかし、今は少し行き詰まっています-.Netアセンブリはポータブルで実行可能な形式ですが、そのようなファイル(objdump)を逆アセンブルするために使用する可能性のある通常のツールはbarfだけです:

このようにネイティブ画像の内部を覗くのは可能ですか?それが失敗すると、好奇心を満たすことができるかもしれない別の方法がありますか?(たとえば、実行中のプロセスでコードを逆アセンブルする)

0 投票する
1 に答える
400 参照

.net - ネットワーク上で実行されている.Netdllの数を減らす方法

多数の.dllファイルを含む.NetFramework4ソフトウェアソリューションがあります。

これらのファイルはネットワークサーバーでホストされ、共通のリモートフォルダー上のクライアントから実行されます。

このサーバーフォルダ内の.dllファイルの数を減らしたいと思います。

いくつかの質問が発生します:

  • 大きなマージされた.dllは、多数の小さな.dllよりも起動/実行が遅くなりますか?
  • クライアントごとに最適化するために、ネットワークライブラリファイルよりもNGenを使用する利点はありますか?

これらの.dllのほとんどは、実際には32ビットのアンマネージコードからCOM表示インターフェイスを介して呼び出されます。

0 投票する
1 に答える
1523 参照

c# - ngen.exeを使用したネイティブイメージの作成と配布

ngen.exeを使用して、CILバイナリからネイティブイメージを取得しようとしました。 このサイト%WINDIR%\assemblyでは、たとえばngenコマンドを実行するとネイティブイメージを取得できると説明されてngen install abc.exeいますが、コンピューターでネイティブイメージが見つかりませんでした。VS2010でWindows764ビットを使用しました。

  • ngenを実行した後、ネイティブイメージをどこで/どのように見つけることができますか?
  • CILバイナリの代わりにネイティブイメージを配布できますか?
0 投票する
2 に答える
2174 参照

.net - NGen で処理されたアセンブリを (ILDasm を使用して) 逆アセンブルできますか?

アセンブリをNGenした場合、ildasmがまだそれを逆アセンブルするのは正常ですか?

Ok。私は HelloWorld クラス ライブラリを作成しました。その後の dll は NGenILDasmTest.dll という名前です。--> .Net fw 4 を対象としています。

Vs 2010コマンドプロンプトから、私はやった

アセンブリが GAC にインストールされているのが見えました。そして、ildasm を実行して、IL を表示できるようにしました。ここまでは順調ですね。

それから私は走ります

(ngen のオプションは指定しませんでした)。そして、このアセンブリは正常にコンパイルされました。フォルダーの下に NGenILDasmTest.ni.dll という名前で配置しました

さて、以下のようにildasmを実行すると

Ngen-ed アセンブリの内容を見ることができました。これは正常ですか?

技術的に言えば、Ngen は IL のネイティブ CPU 命令を生成します (私の場合は C:\windows\Assembly\NAtiveImages_V4.#####_32 の下にあるようです)。その場合、ILDasm を使用して、NGen で処理されたアセンブリを IL として表示するにはどうすればよいですか?

私がここで見逃している「ちょっとしたこと」を理解するのを手伝ってください。

0 投票する
1 に答える
2510 参照

.net - NGenエラーはランタイムエラーをロードできませんでした

.NET Framework 4のNGenを使用して一連のDLLアセンブリをコンパイルすると、奇妙なエラーが発生しました。インストールは一部のDLLで機能しましたが、他のDLLでは次のエラーメッセージが表示されました。

ランタイムのロードに失敗しました。(HRESULTからの例外:0x80131700)。アセンブリAseemblyFileLocationを実行するには、ランタイムのバージョンv4.0.30319が必要です。正しいランタイムがインストールされると、アセンブリがコンパイルされます。

私は正しいランタイムバージョンを持っていると確信しています。ウェブで答えを検索してみたところ、誰もこれに出くわしていなかったことがわかりました。これはさらに奇妙なことです。

これに関するリードはありますか?ありがとう。

0 投票する
2 に答える
742 参照

visual-studio - 「ngeninstall.../ profile」を使用すると、IntelliTraceが正しく機能しなくなります

.NETFrameworkのプロファイルされたネイティブイメージから大きなメリットを得るアプリケーションを開発しています。そのため、インストール中に、いくつかの.NETアセンブリで次のコマンドを実行しています。

ngen install "ASSEMBLY NAME" /Profile

アプリケーションを展開した直後に、VisualStudio2010のユーザーのIntelliTrace機能が機能しなくなったという苦情を受けました。簡単な調査の結果、 mscorlib.dllのプロファイリングネイティブイメージが作成されるとすぐに、IntelliTraceが機能しなくなることがわかりました。また、それが発生すると、イベントビューアに次のメッセージが表示されます。

TraceLog Profilerは、プロセスにロードされたNGEN/profileアセンブリを検出しました。このようなアセンブリはサポートされていません。コレクションは無効になります。

mscorlib.dllは他の.NETアセンブリの依存関係であるため、これは特に厄介です。つまり、ngen install ... /profile任意のアセンブリで使用すると、mscorlib.dllも生成されます。

以下は、問題の簡単な複製です。

  1. 新しいコンソールアプリケーションを作成し、そのターゲットフレームワークを.NET 2に設定します。イメージに表示されているコードを追加し、SomeFunctionの後にブレークポイントを設定します。 サンプルコード

  2. IntelliTraceを「IntelliTraceイベントと通話情報」に設定します

  3. デバッグを開始します。ブレークポイントに到達すると、次の正しいIntelliTraceを取得する必要があります。 正しいIntelliTrace

  4. デバッグを停止し、VisualStudioを終了します。

  5. 昇格モードで新しいcmd.exeを開きます
  6. 実行する: %windir%\Microsoft.NET\Framework\v2.0.50727\ngen install "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /Profile
  7. Visual Studioを再度起動し、デバッグを開始します。同じブレークポイントがヒットします。ただし、今回は、IntelliTraceは次のようになります。 壊れたIntelliTrace
  8. IntelliTraceを同じcmdウィンドウで再度実行するには:

%windir%\Microsoft.NET\Framework\v2.0.50727\ngen uninstall "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /Profile

また、ngen.exeの/ NoDependenciesフラグを使用して、mscorlibなしで特定のアセンブリのみを追加しようとしましたが、フラグは無視されているようです-実行したにもかかわらずngen install ... /Profile /NoDependencies、依存関係がインストールされています。実行ngen display | find "<profiling>"すると、mscorlibが明らかになります。 / NoDependenciesフラグが使用された場合でも、はインストールされたままです。

質問

  1. 他のngen/profileアセンブリがインストールされている場合でも、mscorlib / profileをNGENでアンインストールする方法はありますか?
  2. NGen / Profileの実行後にIntelliTraceを正しく機能させるための回避策はありますか?
  3. / NoDependenciesフラグが期待どおりに機能しないのはなぜですか?

ありがとう、ヴィタリー・ベルマン