Какой цели служат неуправляемые файлы.dll.manifest?
-
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 также указан в манифестах.