Pregunta

Observo archivos unmanaged.dll que tienen un archivo unmanaged.dll.manifest etiquetado. Al abrir estos archivos en un editor, ¿parece ser XML normal con enlaces a ciertos otros dependientes administrados? asambleas. Esto parece ser un cambio reciente ... no recuerdo haberlos visto antes.

  • ¿Por qué se necesitan estos archivos? (Si tuviera que adivinar, sería cargar ensamblados administrados dependientes y / o el CLR)
  • ¿Qué otra información útil pueden contener estos archivos? ¿Contendrían también enlaces a dlls no administrados dependientes (lo que sería bueno)

.

<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>
¿Fue útil?

Solución

Lo que está viendo se llama " Ensambles uno al lado del otro " (SxS) Microsoft ha extendido la maquinaria lado a lado de .NET a archivos DLL no administrados, y ahora los llama "conjuntos de plataforma". En lugar de realizar un enlace por nombre de DLL, las DLL ahora se cargan a través del manifiesto. El equivalente de .NET GAC es la carpeta \ windows \ WinSxS; Esto permite la instalación simultánea de múltiples versiones de la DLL en un sistema, y ??diferentes aplicaciones vinculantes contra diferentes versiones de la misma DLL. También incluye las capacidades de redireccionamiento que ofrece .NET; esto es principalmente lo que hacen los manifiestos (permitiendo la redirección).

Las DLL a las que se hace referencia en el manifiesto (por ejemplo, Microsoft.VC90.DebugCRT) tampoco están administradas (es decir, código nativo)

Los manifiestos de aplicación también tienen otros fines. No conozco los detalles, pero recuerde que la selección de temas en XP también se indica en los manifiestos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top