Domanda

Osservo i file unmanaged.dll che hanno un file unmanaged.dll.manifest tagging lungo. All'apertura di questi file in un editor, sembra essere un normale XML con collegamenti ad alcuni altri dipendenti gestiti? assiemi. Questo sembra essere un recente cambiamento .. non ricordo di averli visti prima.

  • Perché sono necessari questi file? (Se dovessi fare un'ipotesi, sarebbe caricare assembly gestiti dipendenti e / o CLR)
  • Quali altre informazioni utili possono contenere questi file? Conterrebbero anche collegamenti a dll non gestite dipendenti (il che sarebbe carino)

.

<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>
È stato utile?

Soluzione

Quello che stai vedendo si chiama " Assiemi affiancati " (SxS). Microsoft ha esteso i macchinari side-by-side di .NET a DLL non gestite e ora li chiama "assembly di piattaforma". Anziché eseguire il collegamento in base al nome DLL, le DLL vengono ora caricate tramite manifest. L'equivalente di .NET GAC è la cartella \ windows \ WinSxS; ciò consente l'installazione simultanea di più versioni della DLL su un sistema e applicazioni diverse che si collegano a versioni diverse della stessa DLL. Include anche le funzionalità di reindirizzamento offerte da .NET; questo è principalmente ciò che fanno i manifest (consentendo il reindirizzamento).

Le DLL a cui si fa riferimento nel manifest (ad es. Microsoft.VC90.DebugCRT) sono anche non gestite (ovvero codice nativo)

I manifesti delle applicazioni servono anche ad altri scopi. Non conosco i dettagli, ma ricordo che la selezione di temi in XP è indicata anche nei manifesti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top