Как добавить манифест сборки в мой исполняемый файл .NET?
Манифест сборки - это файл XML, который добавляется в переносимый исполняемый файл .NET с типом ресурса RT_MANIFEST
(24).
Манифесты сборки используются для объявления некоторых вещей об исполняемом файле, например ::
Если я хочу отключить масштабирование DPI, потому что я хороший разработчик:
<!-- We are high-dpi aware on Windows Vista -->
<asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
Я могу заявить, что я был спроектирован и протестирован на Windows 7, и я должен продолжать зависеть от любых ошибок в Windows 7
<!-- We were designed and tested on Windows 7 -->
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!--The ID below indicates application support for Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
</application>
</compatibility>
Я могу заявить, что я хороший разработчик и мне не нужна виртуализация файлов и реестра
<!-- Disable file and registry virtualization -->
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
Я могу заявить, что я зависим от конкретной версии 6 библиотеки Microsoft Common Controls :
<!-- Dependency on Common Controls version 6 -->
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"/>
</dependentAssembly>
</dependency>
Я могу заявить, что я зависим от конкретной версии GDI +:
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.GdiPlus" version="1.0.0.0" processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df" language="*" />
</dependentAssembly>
</dependency>
В прежние времена мы создавали бы файл сценария ресурса файл (*.rc
), например ::
wumpa.rc
1 24 AssemblyManifest.xml
добавьте этот файл в проект, и компилятор скомпилирует файл .rc
; включая ресурсы в окончательный исполняемый образ.
За исключением В Visual Studio 2010, похоже, нет способа добавить файл сценария ресурса в проект .
Как добавить скрипт ресурса в проект в Visual Studio 2010?
Как добавить манифест сборки в проект в Visual Studio 2010?
Примечание : Любое решение должно работать в среде с контролем версий и несколькими разработчиками (например, жестко заданные пути к, вероятно, не установленным двоичным файлам нарушат сборку и не будут работать).
Бонусная болтовня
Обновление : Майкл Фокс предлагает использовать диалоговое окно свойств проекта для включения манифеста сборки, но он не указывает , где :
Обновление : Вещи, которые я пробовал:
- На экране свойств проекта выберите Приложение . Выберите опцию радио Значок и манифест . Под Manifest оставьте значение по умолчанию
Embed manifest with default settings
:
Не работает, поскольку он встраивает манифест с настройками по умолчанию , а не с моими настройками.
Под Манифест , измените опцию комбо на Create application without a manifest
:
Не работает, потому что не содержит манифеста
Под Ресурсы выберите опцию Файл ресурсов радио:
Не работает, потому что вы не можете выбрать манифест сборки (или скрипт ресурса, который включает манифест сборки)
В разделе Ресурсы выберите параметр радиосвязи Файл ресурсов , затем введите путь к XML-файлу манифеста сборки:
Не работает, потому что Visual Studio задыхается при представлении с манифестом сборки :
- В разделе Ресурсы , выберите опцию Файл ресурсов , а затем введите путь к файлу сценария ресурса:
Не работает, потому что Visual Studio задыхается при представлении со сценарием ресурса :
Добавьте AssemblyManifest.xml
в мой проект, а затем найдите его в поле Manifest :
Не работает, поскольку файл манифеста сборки не указан в качестве опции
У меня есть дюжина других вещей, которые я могу продолжать снимать скриншоты (добавьте файл .rc к решению, найдите его в раскрывающемся списке, выберите «no manifest» и измените действие сборки wumpa.rc
на различные вещи, соберите .rc
файл, используя отдельный компилятор ресурсов, либо вручную, либо на этапе предварительной сборки / msbuild, и выберите этот .res
файл в качестве моего ресурса).я перестану добавлять дополнительные вопросы к моему вопросу и надеюсь на ответ.