Question

J'observe les fichiers unmanaged.dll portant un fichier 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 ressemble à un changement récent .. ne vous souvenez pas de les avoir vu plus tôt.

  • Pourquoi ces fichiers sont-ils nécessaires? (Si je devais deviner, ce serait de charger des assemblys gérés dépendants et / ou le CLR)
  • Quelles autres informations utiles ces fichiers peuvent-ils contenir? Contiendraient-ils également des liens vers des dll dépendantes non gérées (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>
Était-ce utile?

La solution

Ce que vous voyez s'appelle " Assemblages côte à côte " (SxS). Microsoft a étendu les machines côte à côte .NET aux DLL non gérées et les appelle désormais "assemblages de plates-formes". Plutôt que d’effectuer une liaison par nom de DLL, les DLL sont maintenant 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 même système et la liaison de différentes applications avec différentes versions de la même DLL. Il inclut également les fonctionnalités de redirection offertes par .NET. C’est principalement ce que font les manifestes (autoriser la redirection).

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

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top