Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Активация без регистрации для компонентов на основе .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это имя файла ресурса, содержащего внедренные ресурсы.