2008-12-08 9 views
2

J'observe les fichiers unmanaged.dll ayant un fichier managé unmanaged.dll.manifest. En ouvrant ces fichiers dans un éditeur, il semble que ce soit du XML normal avec des liens vers certains autres dépendants gérés? assemblées. Cela semble être comme un changement récent .. ne me souviens pas de les voir plus tôt.A quoi servent les fichiers unmanaged.dll.manifest?

  • Pourquoi ces fichiers sont-ils nécessaires? (Si je devais faire une supposition, ce serait de charger des assemblages gérés dépendants et/ou le CLR)
  • Quelles autres informations utiles peuvent contenir ces fichiers? Seraient-ils aussi contenir des liens vers des dll non dépendantes dépendantes (ce qui serait bien)

.

<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> 

Répondre

3

Ce que vous voyez est appelé "Side-by-side assemblies" (SxS). Microsoft a étendu les machines côte à côte .NET aux DLL non managées et les appelle maintenant "assemblys de plate-forme". Plutôt que d'effectuer un lien par nom de DLL, les DLL sont désormais chargées via le manifeste. L'équivalent du .NET GAC est le dossier \ windows \ WinSxS; cela permet l'installation simultanée de plusieurs versions de la DLL sur un système et de différentes applications liées à différentes versions de la même DLL. Il inclut également les capacités de redirection offertes par .NET; c'est principalement ce que font les manifestes (permettant la redirection).

Les DLL mentionnés dans le manifeste (par exemple Microsoft.VC90.DebugCRT) sont également non géré (à savoir le code natif)

manifestes d'application servent d'autres fins. Je ne connais pas les détails, mais je rappelle que la sélection des thèmes dans XP est également indiquée dans les manifestes.

Questions connexes