ローダーが実行時にアセンブリの署名を検証せずに、またはGACされたアセンブリを使用して、ネイティブイメージが使用されているかどうかを確認するにはどうすればよいですか?
NGenで実験している複雑なシステムがありますが、現在、実行時バインディングの依存関係が多いため、すべてのDLLが配置されているフォルダーからexeを実行しています。プロセスエクスプローラーを見ると、ネイティブイメージが使用されていますが、完全なメリットが得られ、ローダーの検証手順が不要であることをどのように確認できますか?
乾杯、グレイム。
更新: アセンブリバインディングログビューアからこの種のものをたくさん取得しています:
LOG: [Level 1]Start validating IL dependency MyCompany.Entities, Version=2.0.0.0, Culture=neutral, PublicKeyToken=7cd8595f4671c5dd.
LOG: Dependency evaluation succeeded.
そして最後に
LOG: Validation of dependencies succeeded.
LOG: Start loading all the dependencies into load context.
LOG: Loading of dependencies succeeded.
LOG: Bind to native image succeeded.
Native image has correct version information.
Attempting to use native image C:\Windows\assembly\NativeImages_v2.0.50727_32\MyCompany.Mylibrary#\4710bb8309419d707681bd360088181f\MyCompany.MyLibrary.MyClass.ni.dll.
ZAP: Native image has been relocated.
Native image successfully used.
したがって、ネイティブイメージを使用していますが、それらを検証しています。つまり、ネイティブイメージを作成した場所であるにもかかわらず、GACバージョンを使用していません。
ngen install "MyCompany.Entites, Version=2.0.0.0, Culture=neutral, PublicKeyToken=7cd8595f4671c5dd, processorArchitecture=MSIL"
脚注: この記事は、アセンブリがGACからロードされていない場合、検証プロセスがNGenの利点を相殺することを示唆しているようです。 CLR Inside Out-アプリケーション起動パフォーマンス(MSDN)の改善
更新-Nobugzが以下のコメントで指摘しているように、3.5 SP1以降、上記の検証手順は実行されません。NGenのMSDNドキュメントを参照してください。