Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Манифест сборки — это XML-файл, описывающий параллельную сборку. Манифесты сборок описывают имена и версии параллельных сборок, файлов и ресурсов сборки, а также зависимость сборки от других параллельных сборок. Для правильной установки, активации и выполнения параллельных сборок требуется, чтобы манифест сборки всегда сопровождал сборку в системе.
Полный список XML-схемы см. в разделе "Схема файла манифеста".
Манифесты сборки содержат следующие элементы и атрибуты.
Элемент | Атрибуты | Обязательно |
---|---|---|
собрание | Да | |
версия манифеста | Да | |
noInheritable | нет | |
assemblyIdentity | Да | |
тип | Да | |
имя | Да | |
языка | нет | |
processorArchitecture | нет | |
версия | Да | |
publicKeyToken | нет | |
зависимость | нет | |
зависимыйAssembly | нет | |
file | нет | |
имя | Да | |
hashalg | нет | |
хэш | нет | |
comClass | нет | |
описание | нет | |
clsid | Да | |
threadingModel | нет | |
tlbid | нет | |
progid | нет | |
miscStatus | нет | |
miscStatusIcon | нет | |
miscStatusContent | нет | |
miscStatusDocPrint | нет | |
miscStatusThumbnail | нет | |
typelib | нет | |
tlbid | Да | |
версия | Да | |
helpdir | Да | |
resourceid | нет | |
флаги | нет | |
comInterfaceExternalProxyStub | нет | |
iid | Да | |
baseInterface | нет | |
numMethods | нет | |
имя | нет | |
tlbid | нет | |
proxyStubClsid32 | нет | |
comInterfaceProxyStub | нет | |
iid | Да | |
имя | Да | |
tlbid | нет | |
baseInterface | нет | |
numMethods | нет | |
proxyStubClsid32 | нет | |
threadingModel | нет | |
windowClass | нет | |
версии | нет |
Расположение файла
Манифесты сборки можно установить в трех расположениях:
- Как манифесты, сопровождающие общие сборки, манифесты сборок должны быть установлены в виде отдельного файла в параллельном кэше сборок. Обычно это папка WinSxS в каталоге Windows.
- Как манифесты, сопровождающие частные сборки, манифесты сборок должны быть установлены в структуре каталогов приложения. Обычно это отдельный файл в той же папке, что и исполняемый файл приложения.
- В качестве ресурса в библиотеке DLL сборка доступна для частного использования библиотеки DLL. Манифест сборки не может быть включен в качестве ресурса в EXE. EXE-файл может включать манифест приложения в качестве ресурса.
Синтаксис имени файла
Имя манифеста сборки — любое допустимое имя файла, за которым следует .manifest
.
Например, манифест сборки, ссылающийся на myassembly, будет использовать следующий синтаксис имени файла: myassembly.<resource ID>.manifest
Поле можно опустить <resource ID>
, если манифест сборки устанавливается в виде отдельного файла или если идентификатор ресурса равен 1.
Замечание
Из-за того, как параллельно выполняется поиск частных сборок, при упаковке библиотеки DLL в качестве частной сборки применяются следующие ограничения именования. Рекомендуемый способ сделать это — поместить манифест сборки в библиотеку DLL в качестве ресурса. В этом случае идентификатор ресурса должен иметь значение 1, а имя частной сборки может совпадать с именем библиотеки DLL. Например, если имя библиотеки DLL Microsoft.Windows.mysample.dll, значение атрибута имени, используемого в элементе assemblyIdentity манифеста, также может быть Microsoft.Windows.mysample. Альтернативным способом является размещение манифеста сборки в отдельном файле. В этом случае имя сборки и его манифеста должно отличаться от имени библиотеки DLL. Например, Microsoft.Windows.mysampleAsm, Microsoft.Windows.mysampleAsm.manifest и Microsoft.Windows.Mysample.dll. Дополнительные сведения о том, как параллельно выполняется поиск частных сборок, см. в разделе "Последовательность поиска сборок".
Элементы
Имена элементов и атрибутов чувствительны к регистру. Значения элементов и атрибутов не учитывает регистр, за исключением значения атрибута типа.
-
сборка
-
Элемент контейнера. Его первый подэлемент должен быть элемент assemblyIdentity или noInheritable . Манифест сборки однозначно описывает параллельное сборку, определяемую сборкой assemblyIdentity. Обязательное.
Элемент сборки должен находиться в пространстве имен urn:schemas-microsoft-com:asm.v1. Дочерние элементы сборки также должны находиться в этом пространстве имен путем наследования или путем тегов.
Элемент сборки имеет следующий атрибут.
Свойство Описание версия манифеста Атрибут manifestVersion должен иметь значение 1.0. -
noInheritable
-
Включите этот элемент в манифест сборки, чтобы указать, что сборка управляет контекстами активации и ее объектами . Элемент noInheritable должен быть подэлементом элемента сборки . Элемент assemblyIdentity должен поступать после любого элемента noInheritable . Элемент noInheritable требуется в манифесте сборки, если сборка используется любыми манифестами приложения , которые включают элемент noInherit . Элемент noInheritable в манифесте приложения не действует. Элемент noInheritable не имеет дочерних элементов.
-
assemblyIdentity
-
Описывает и однозначно идентифицирует боковую сборку.
Как первый подэлемент элемента сборки , assemblyIdentity описывает и однозначно идентифицирует боковую сборку, которая владеет этим манифестом сборки. Это называется сборкой DEF-contextIdentity манифеста сборки.
Как первый подэлемент зависимого элементаAssembly , assemblyIdentity описывает и однозначно определяет параллельное сборку, которая используется сборкой DEF-contextIdentity. Это называется сборкой REF-contextIdentity манифеста сборки. Сборка DEF-context требует правильной работы сборки контекста REF. Обратите внимание, что каждая сборка REF-context AssemblyIdentity должна точно соответствовать соответствующей сборке DEF-contextIdentity в собственном манифесте сборки, на которую ссылается ссылка.
Этот элемент не имеет подэлементов. Элемент assemblyIdentity имеет следующие атрибуты.
-
зависимость
-
Элемент контейнера, включая по крайней мере один зависимыйAssembly. Первый подэлемент должен быть зависимым элементомAssembly . Зависимость не имеет атрибутов. Необязательно.
-
зависимыйAssembly
-
Первый вложенный элемент должен быть элемент assemblyIdentity , описывающий и однозначно определяющий параллельное сборку, которая используется параллельной сборкой, которая владеет этим манифестом сборки. Каждый зависимыйAssembly должен находиться в одной зависимости. Необязательно.
-
файл
-
Содержит файлы, используемые параллельной сборкой. Содержит comClass, typelib, windowClass, comInterfaceProxyStub subelements. Необязательно.
Элемент файла имеет следующие атрибуты.
Свойство Описание имя Имя файла, например Conctl32.dll. hashalg Алгоритм, используемый для создания хэша файла. Это значение должно быть SHA1. хэш Хэш файла, на который ссылается имя. Шестнадцатеричная строка длины в зависимости от хэш-алгоритма. -
comClass
-
Подэлемент элемента файла . Необязательно.
Элемент comClass имеет следующие атрибуты.
Свойство Описание описание Имя класса. clsid GUID, который однозначно идентифицирует класс. Обязательное. Значение должно быть в формате допустимого GUID. threadingModel Модель потоков, используемая классами COM в процессе. Если это свойство равно NULL, модель потоков не используется. Компонент создается на основном потоке клиента и вызовы из других потоков маршалируются в этот поток. Необязательно. Допустимые значения: "Квартира", "Бесплатный", "Оба" и "Нейтральный". tlbid GUID для библиотеки типов для этого com-компонента. Значение должно быть в формате GUID. Необязательно. progid Программный идентификатор, зависящий от версии, связанный с com-компонентом. Формат ProgID является <поставщиком>.<компонент>.<версия>. miscStatus Дублирует в манифесте сборки сведения, предоставленные разделом реестра MiscStatus. Если значения для атрибутов miscStatusIcon, miscStatusContent, miscStatusDocprint или miscStatusThumbnail не найдены, для отсутствующих атрибутов используется соответствующее значение по умолчанию, указанное в miscStatus. Значение может быть разделенным запятыми значений атрибутов из приведенной ниже таблицы. Этот атрибут можно использовать, если класс COM является классом OCX, который требует значений разделов реестра Miscstatus. miscStatusIcon Дублирует данные в манифесте сборки, предоставляемые DVASPECT_ICON. Он может предоставить значок объекта. Значение может быть разделенным запятыми значений атрибутов из приведенной ниже таблицы. Этот атрибут можно использовать, если класс COM является классом OCX, который требует значений разделов реестра Miscstatus. miscStatusContent Дублирует данные в манифесте сборки, предоставляемые DVASPECT_CONTENT. Он может предоставить составной документ, отображаемый для экрана или принтера. Значение может быть разделенным запятыми значений атрибутов из приведенной ниже таблицы. Этот атрибут можно использовать, если класс COM является классом OCX, который требует значений разделов реестра Miscstatus. miscStatusDocprint Дублирует в манифесте сборки сведения, предоставленные DVASPECT_DOCPRINT. Он может предоставить представление объекта, отображаемое на экране, как будто напечатано на принтере. Значение может быть разделенным запятыми значений атрибутов из приведенной ниже таблицы. Этот атрибут можно использовать, если класс COM является классом OCX, который требует значений разделов реестра Miscstatus. miscStatusThumbnail Дублирует в манифесте сборки сведения, предоставленные DVASPECT_THUMBNAIL. Он может предоставить эскиз объекта, отображаемого в средстве просмотра. Значение может быть разделенным запятыми значений атрибутов из приведенной ниже таблицы. Этот атрибут можно использовать, если класс COM является классом OCX, который требует значений разделов реестра Miscstatus. Элемент comClass может иметь <progid>... элементы в качестве дочерних элементов, которые перечисляют зависимые от версии progids.
В следующем примере показан элемент comClass , включенный в элемент файла .
<file name="sampleu.dll"> <comClass description="Font Property Page" clsid="{0BE35200-8F91-11CE-9DE3-00AA004BB851}" threadingModel = "Both" tlbid = "{44EC0535-400F-11D0-9DCD-00A0C90391D3}"/> <comClass description="Color Property Page" clsid="{0BE35201-8F91-11CE-9DE3-00AA004BB851}" progid="ABC.Registrar"/> </file>
Если класс COM является классом OCX, который требует подраздела реестра MiscStatus, чтобы указать, как создать и отобразить объект, можно включить объект, дублируя эти сведения в манифесте сборки. Укажите характеристики объекта с помощью атрибутов miscStatus, miscStatusIcon, miscStatusContent, miscStatusDocprint и miscStatusThumbnail атрибутов элемента comClass . Задайте для этих атрибутов список значений атрибутов, разделенных запятыми, из следующей таблицы. Эти атрибуты дублируют сведения, предоставляемые перечислением DVASPECT. Если значение не найдено для miscStatusIcon, miscStatusContent, miscStatusDocprint или miscStatusThumbnail используется значения по умолчанию, указанные в miscStatus . Используйте значения атрибутов из следующей таблицы. Они соответствуют битовому флагу перечисления OLEMISC .
Значение атрибута Константа OLEMISC recomposeonresize OLEMISC_RECOMPOSEONRESIZE onlyiconic OLEMISC_ONLYICONIC insertnotreplace OLEMISC_INSERTNOTREPLACE статичный OLEMISC_STATIC cantlinkinside OLEMISC_CANTLINKINSIDE canlinkbyole1 OLEMISC_CANLINKBYOLE1 islinkobject OLEMISC_ISLINKOBJECT insideout OLEMISC_INSIDEOUT activatewhenvisible OLEMISC_ACTIVATEWHENVISIBLE renderingisdeviceindependent OLEMISC_RENDERINGISDEVICEINDEPENDENT invisibleatruntime OLEMISC_INVISIBLEATRUNTIME alwaysrun OLEMISC_ALWAYSRUN actslikebutton OLEMISC_ACTSLIKEBUTTON actslikelabel OLEMISC_ACTSLIKELABEL nouiactivate OLEMISC_NOUIACTIVATE Выравнивание OLEMISC_ALIGNABLE simpleframe OLEMISC_SIMPLEFRAME setclientsitefirst OLEMISC_SETCLIENTSITEFIRST imemode TOLEMISC_IMEMODE ignoreativatewhenvisible OLEMISC_IGNOREACTIVATEWHENVISIBLE wantstomenumerge OLEMISC_WANTSTOMENUMERGE supportsmultilevelundo OLEMISC_SUPPORTSMULTILEVELUNDO -
typelib
-
Подэлемент элемента файла . Необязательно.
Элемент typelib содержит атрибуты, показанные в следующей таблице.
Свойство Описание tlbid Уникальный идентификатор библиотеки типов. Обязательное. версия Номер версии двух частей библиотеки типов. Если увеличивается только дополнительный номер версии, все функции предыдущей библиотеки типов поддерживаются совместимым способом. Если основной номер версии изменяется, код, скомпилированный в библиотеке типов, должен быть перекомпилирован. Номер версии библиотеки типов может отличаться от номера версии приложения. Обязательное. helpdir Каталог, в котором находится файл справки для типов в библиотеке типов. Если приложение поддерживает библиотеки типов для нескольких языков, библиотеки могут ссылаться на разные имена файлов в каталоге файлов справки. Если значения нет, укажите "". Обязательное. resourceid Шестнадцатеричное строковое представление идентификатора языкового стандарта (LCID). Это один до четырех шестнадцатеричных цифр без префикса 0x и без начальных нулей. LCID может иметь нейтральный идентификатор подлангуга. Дополнительные сведения см. в разделе Идентификаторы языкового стандарта. Необязательно. флаги Строковое представление флагов библиотеки типов для этой библиотеки типов. В частности, он должен быть одним из "RESTRICTED", "CONTROL", "HIDDEN" и "HASDISKIMAGE". Это значения перечисления LIBFLAGS и одинаковые флаги, указанные в параметре uLibFlags метода ICreateTypeLib::SetLibFlags . Необязательно. В следующем примере показан элемент typelib , включенный в элемент файла .
<file name="sampleu.dll"> <typelib tlbid="{44EC0535-400F-11D0-9DCD-00A0C90391D3}" version="1.0" helpdir=""/> </file>
-
comInterfaceExternalProxyStub
-
ComInterfaceExternalProxyStub является подэлементом элемента сборки и используется для интерфейсов автоматизации. Например, IDispatch и производные интерфейсы. Необязательно.
Реализация заглушки по умолчанию подходит для большинства интерфейсов автоматизации, таких как интерфейсы, производные от IDispatch. Заглушка прокси-сервера интерфейса и все остальные внешние реализации интерфейса-заглушки прокси-сервера должны быть перечислены в comInterfaceExternalProxyStub. Элемент comInterfaceExternalProxyStub содержит атрибуты, показанные в следующей таблице.
Свойство Описание iid IID интерфейса, для которого объявляется прокси-сервер. Обязательное. Значение должно быть в форме: "{iid}". baseInterface IiD интерфейса, из которого производный атрибут iid . Этот атрибут является необязательным. Значение должно быть в форме: "{iid}". numMethods Количество методов, реализованных интерфейсом. Этот атрибут является необязательным. Значение должно быть в форме: "n". имя Имя интерфейса, как показано в коде. Например, "IViewObject". Это не должно быть описательной строкой. Этот атрибут является необязательным. Значение должно быть в форме: "имя". tlbid Библиотека типов, содержащая описание интерфейса, указанного атрибутом iid . Этот атрибут является необязательным. Значение должно быть в форме: "{tlbid}". proxyStubClsid32 Сопоставляет идентификатор IID с CLSID в 32-разрядных библиотеках DLL прокси-сервера. В следующем примере показан элемент comInterfaceExternalProxyStub .
<comInterfaceExternalProxyStub name="IAxWinAmbientDispatch" iid="{B6EA2051-048A-11D1-82B9-00C04FB9942E}" numMethods="35" baseInterface="{00000000-0000-0000-C000-000000000046}"/>
-
comInterfaceProxyStub
-
Подэлемент элемента файла . Необязательно.
Если файл в сборке реализует заглушку прокси-сервера, соответствующий тег файла должен содержать подэлемент comInterfaceProxyStub с атрибутами, идентичными элементу comInterfaceProxyStub . Интерфейсы маршалинга между процессами и потоками могут не работать должным образом, если вы опустите некоторые зависимости comInterfaceProxyStub для компонента.
Элемент comInterfaceProxyStub имеет следующие атрибуты.
Свойство Описание iid Тем. IID интерфейса, для которого объявляется прокси-сервер. Обязательное. Значение должно быть в форме: "{iid}". имя Имя интерфейса, как показано в коде. Например, "IViewObject". Это не должно быть описательной строкой. Этот атрибут является необязательным. Значение должно быть в форме: "имя". tlbid Библиотека типов, содержащая описание интерфейса, указанного атрибутом iid . Этот атрибут является необязательным. Значение должно быть в форме: "{tlbid}". baseInterface IiD интерфейса, из которого производный атрибут iid . Этот атрибут является необязательным. Значение должно быть в форме: "{iid}". numMethods Количество методов, реализованных интерфейсом. Этот атрибут является необязательным. Значение должно быть в форме: "n". proxyStubClsid32 Сопоставляет идентификатор IID с CLSID в 32-разрядных библиотеках DLL прокси-сервера. threadingModel Модель потоков, используемая классами COM в процессе. Если это свойство равно NULL, модель потоков не используется. Компонент создается на основном потоке клиента и вызовы из других потоков маршалируются в этот поток. Необязательно. Допустимые значения: "Квартира", "Бесплатный", "Оба" и "Нейтральный". -
windowclass
-
Имя класса Windows, который должен быть версияю. Элемент windowclass имеет следующий атрибут.
Свойство Описание версии Этот атрибут определяет, содержит ли имя внутреннего класса окна, используемого в регистрации, версию сборки, содержащей класс окна. Значение этого атрибута может быть "да" или "нет". Значение по умолчанию — "да". Значение "нет" следует использовать только в том случае, если тот же класс окна определен параллельным компонентом и эквивалентным неопубликуемым компонентом, и вы хотите рассматривать их как один и тот же класс окна. Обратите внимание, что обычные правила регистрации классов окон применяют только первый компонент, регистрирующий класс окна, сможет зарегистрировать его, так как он не является версией. В следующем примере показан элемент windowclass , включенный в элемент file .
<file name="comctl32.dll"> <windowClass versioned="no">ToolbarWindow32</windowClass> </file>
Пример
Ниже приведен пример манифеста сборки.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<assemblyIdentity type="win32" name="Microsoft.Tools.SampleAssembly" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="0000000000000000"/>
<file name="sampleu.dll" hash="3eab067f82504bf271ed38112a4ccdf46094eb5a" hashalg="SHA1">
<comClass description="Font Property Page" clsid="{0BE35200-8F91-11CE-9DE3-00AA004BB851}"/>
<comClass description="Color Property Page" clsid="{0BE35201-8F91-11CE-9DE3-00AA004BB851}"/>
<comClass description="Picture Property Page" clsid="{0BE35202-8F91-11CE-9DE3-00AA004BB851}"/>
</file>
<file name="bar.dll" hash="ac72753e5bb20446d88a48c8f0aaae769a962338" hashalg="SHA1"/>
<file name="foo.dll" hash="a7312a1f6cfb46433001e0540458de60adcd5ec5" hashalg="SHA1">
<comClass description="Registrar Class" clsid="{44EC053A-400F-11D0-9DCD-00A0C90391D3}" progid="ATL.Registrar"/>
<comInterfaceProxyStub iid="{B6EA2051-048A-11D1-82B9-00C04FB9942E}" name=" IAxWinAmbientDispatch " tlbid="{34EC053A-400F-11D0-9DCD-00A0C90391D3}"/>
<typelib tlbid="{44EC0535-400F-11D0-9DCD-00A0C90391D3}" version="1.0" helpdir=""/>
</file>
<file name="sampledll.dll" hash="ba62960ceb15073d2598379307aad84f3a73dfcb" hashalg="SHA1"/>
<windowClass>ToolbarWindow32</windowClass>
<windowClass>ComboBoxEx32</windowClass>
<windowClass>sample_trackbar32</windowClass>
<windowClass>sample_updown32</windowClass>
</assembly>