Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Активация без регистрации для компонентов на основе .NET Framework немного сложнее, чем для com-компонентов. Для установки требуется два манифеста:
COM-приложения должны иметь манифест приложения в стиле Win32 для идентификации управляемого компонента.
Компоненты на основе .NET Framework должны иметь манифест компонента для сведений о активации, необходимых во время выполнения.
В этом разделе описывается связывание манифеста приложения с приложением; связывание манифеста компонента с компонентом; и внедрение манифеста компонента в сборку.
Создание манифеста приложения
Используя редактор XML, создайте (или измените) манифест приложения, принадлежащий com-приложению, которое взаимодействует с одним или несколькими управляемыми компонентами.
Вставьте следующий стандартный заголовок в начале файла:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> </assembly>Сведения о элементах манифеста и их атрибутах см. в разделе "Манифесты приложения".
Определите владельца манифеста. В следующем примере
myComAppверсия 1 владеет файлом манифеста.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity type="win32" name="myOrganization.myDivision.myComApp" version="1.0.0.0" processorArchitecture="msil" /> </assembly>Определите зависимые сборки. В следующем примере
myComAppзависит отmyManagedComp.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity type="win32" name="myOrganization.myDivision.myComApp" version="1.0.0.0" processorArchitecture="x86" publicKeyToken="8275b28176rcbbef" /> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="myOrganization.myDivision.myManagedComp" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="8275b28176rcbbef" /> </dependentAssembly> </dependency> </assembly>Сохраните и присвойте файлу манифеста имя. Имя манифеста приложения — это имя исполняемого файла сборки, за которым следует расширение .manifest. Например, имя файла манифеста приложения для myComApp.exe myComApp.exe.manifest.
Манифест приложения можно установить в том же каталоге, что и приложение COM. Кроме того, его можно добавить как ресурс в файл .exe приложения. Дополнительные сведения см. в разделе "О параллельных сборках".
Создание манифеста компонента
С помощью редактора XML создайте манифест компонента для описания управляемой сборки.
Вставьте следующий стандартный заголовок в начале файла:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> </assembly>Определите владельца файла. Элемент
<assemblyIdentity>элемента в файле манифеста<dependentAssembly>приложения должен соответствовать элементу в манифесте компонента. В следующем примереmyManagedCompверсия 1.2.3.4 владеет файлом манифеста.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity name="myOrganization.myDivision.myManagedComp" version="1.2.3.4" publicKeyToken="8275b28176rcbbef" processorArchitecture="msil" /> </assembly>Определите каждый класс в сборке.
<clrClass>Используйте элемент для уникальной идентификации каждого класса в управляемой сборке. Элемент, являющийся подэлементом<assembly>элемента, имеет атрибуты, описанные в следующей таблице.Свойство Description Обязательно clsidИдентификатор, указывающий активируемый класс. Да descriptionСтрока, которая сообщает пользователю о компоненте. Пустая строка по умолчанию. нет nameСтрока, представляющая управляемый класс. Да progidИдентификатор, используемый для активации с поздней привязкой. нет threadingModelМодель потоков COM. "Оба" — это значение по умолчанию. нет runtimeVersionУказывает версию общеязыковой среды выполнения (CLR). Если этот атрибут не указан, а среда CLR еще не загружена, компонент загружается с последней установленной средой CLR до среды CLR версии 4. Если указать версию 1.0.3705, 1.1.4322 или 2.0.50727, она автоматически обновляется до последней установленной версии CLR перед версией 4 CLR (обычно 2.0.50727). Если другая версия среды CLR уже загружена, и указанная версия может быть загружена параллельно в процессе, указанная версия загружается; в противном случае используется загруженная среда CLR. Это может привести к сбою загрузки. нет tlbidИдентификатор библиотеки типов, содержащей сведения о типе класса. нет Все теги атрибутов чувствительны к регистру. Вы можете получить CLSID, ProgID, модели потоков и версию среды выполнения, просмотрев экспортированную библиотеку типов для сборки с помощью OLE/COM ObjectViewer (Oleview.exe).
Следующий манифест компонента определяет два класса
testClass1иtestClass2.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity name="myOrganization.myDivision.myManagedComp" version="1.2.3.4" publicKeyToken="8275b28176rcbbef" /> <clrClass clsid="{65722BE6-3449-4628-ABD3-74B6864F9739}" progid="myManagedComp.testClass1" threadingModel="Both" name="myManagedComp.testClass1" runtimeVersion="v1.0.3705"> </clrClass> <clrClass clsid="{367221D6-3559-3328-ABD3-45B6825F9732}" progid="myManagedComp.testClass2" threadingModel="Both" name="myManagedComp.testClass2" runtimeVersion="v1.0.3705"> </clrClass> <file name="MyManagedComp.dll"> </file> </assembly>Сохраните и присвойте файлу манифеста имя. Имя манифеста компонента — это имя библиотеки сборок, за которой следует расширение .manifest. Например, myManagedComp.dll соответствует myManagedComp.manifest.
Необходимо внедрить манифест компонента в качестве ресурса в сборку.
Внедрение манифеста компонента в управляемую сборку
Создайте скрипт ресурса, содержащий следующую инструкцию:
1 RT_MANIFEST myManagedComp.manifestВ этом заявлении
myManagedComp.manifestявляется именем внедряемого манифеста компонента. В этом примере имя файла скриптаmyresource.rc.Скомпилируйте скрипт с помощью компилятора ресурсов Microsoft Windows (Rc.exe). В командной строке введите следующую команду:
rc myresource.rcRc.exe создает
myresource.resфайл ресурса.Скомпилируйте исходный файл сборки еще раз и укажите файл ресурсов с помощью параметра /win32res :
/win32res:myresource.resОпять же,
myresource.resэто имя файла ресурса, содержащего внедренные ресурсы.