Какой цели служат неуправляемые файлы.dll.manifest?

StackOverflow https://stackoverflow.com/questions/348877

  •  20-08-2019
  •  | 
  •  

Вопрос

Я наблюдаю неуправляемые.dll-файлы, к которым прилагается неуправляемый файл.dll.manifest.При открытии этих файлов в редакторе кажется, что это обычный XML со ссылками на некоторые другие зависимые управляемые?собрания.Похоже, это похоже на недавнее изменение..не помню, чтобы видел их раньше.

  • Зачем нужны эти файлы?(Если бы мне пришлось делать предположения, это было бы для загрузки зависимых управляемых сборок и / или среды 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>
Это было полезно?

Решение

То, что вы видите , называется "Параллельные сборки" (SxS).Корпорация Майкрософт расширила .СЕТЕВОЙ параллельный механизм для неуправляемых библиотек DLL и теперь называет их "сборками платформы".Вместо того, чтобы выполнять привязку по имени библиотеки DLL, библиотеки DLL теперь загружаются через манифест.Эквивалентом .NET GAC является папка \windows\WinSxS;это позволяет одновременно устанавливать несколько версий библиотеки DLL в одной системе и выполнять привязку разных приложений к разным версиям одной и той же библиотеки DLL.Он также включает в себя возможности перенаправления, которые .NET предлагает;это в первую очередь то, что делают манифесты (разрешающие перенаправление).

Библиотеки DLL, упомянутые в манифесте (напримерMicrosoft.VC90.DebugCRT) также неуправляемы (т.е.машинный код)

Манифесты приложений служат и для других целей.Я не знаю подробностей, но напомню, что выбор тем в XP также указан в манифестах.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top