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,并且不同的应用程序可以绑定同一个 DLL 的不同版本。它还包括 .NET 提供的重定向功能;这主要是清单所做的(允许重定向)。

清单中引用的 DLL(例如 Microsoft.VC90.DebugCRT)也是非托管的(即本机代码)

应用程序清单也有其他用途。我不知道细节,但记得 XP 中的主题选择也显示在清单中。

于 2008-12-08T09:57:19.297 回答