2008-12-08 113 views
2

我觀察到有unmanaged.dll.manifest文件標記的unmanaged.dll文件。在編輯器中打開這些文件時,它似乎是正常的XML,並且鏈接到某些其他依賴託管的?組件。這似乎是最近的一次變化......不記得早些時候看到他們。unmanaged.dll.manifest文件的用途是什麼?

  • 爲什麼需要這些文件? (如果我不得不猜測,它將加載相關的託管程序集和/或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> 

回答

3

你所看到的是所謂的「Side-by-side assemblies」(SxS)。微軟將.NET並行機制擴展到非託管DLL,現在稱之爲「平臺組件」。通過DLL名稱進行鏈接,而不是通過清單載入DLL。 .NET GAC的等價物是\ windows \ WinSxS文件夾;這允許在一個系統上同時安裝多個版本的DLL,並允許不同的應用程序與同一個DLL的不同版本綁定。它還包括.NET提供的重定向功能;這主要是這些清單所做的(允許重定向)。

在清單(例如Microsoft.VC90.DebugCRT)所指的DLL是也非託管(即本機代碼)

應用程序清單用於其他目的,以及。我不知道細節,但回想一下,清單中還指出了XP中主題的選擇。