2

unmanaged.dll.manifest ファイルにタグ付けされた unmanaged.dll ファイルを観察しました。このファイルをエディターで開くと、管理されている特定の他の依存関係へのリンクを含む通常の XML のように見えますか? アセンブリ。これは最近の変更のようです..以前に見た覚えはありません。

  • これらのファイルが必要な理由 (推測する必要がある場合は、依存するマネージド アセンブリおよび/または CLR を読み込むことになります)
  • これらのファイルには、他にどのような有用な情報が含まれていますか? それらには、依存する管理されていない dll へのリンクも含まれますか (これはいいでしょう)。

.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
      </requestedPrivileges>
    </security>
  </trustInfo>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC90.DebugCRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC90.DebugMFC" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
</assembly>
4

1 に答える 1

4

あなたが見ているのは「サイドバイサイドアセンブリ」(SxS)と呼ばれています。Microsoft は、.NET のサイド バイ サイド機構をアンマネージ DLL に拡張し、現在ではそれらを「プラットフォーム アセンブリ」と呼んでいます。DLL 名によるリンケージを実行するのではなく、DLL はマニフェストを介してロードされるようになりました。.NET GAC に相当するのはフォルダ \windows\WinSxS です。これにより、複数のバージョンの DLL を 1 つのシステムに同時にインストールし、異なるアプリケーションを同じ DLL の異なるバージョンにバインドすることができます。また、.NET が提供するリダイレクト機能も含まれています。これは主にマニフェストが行うことです (リダイレクトを許可します)。

マニフェストで参照されている DLL (Microsoft.VC90.DebugCRT など) も管理されていません (つまり、ネイティブ コード)。

アプリケーション マニフェストは、他の目的にも役立ちます。詳細はわかりませんが、XP でのテーマの選択もマニフェストに示されていることを思い出してください。

于 2008-12-08T09:57:19.297 に答える