Поделиться через


Практическое руководство. Настройка компонентов на основе платформы .NET Framework для активации без регистрации.

Обновлен: Ноябрь 2007

Активация без регистрации для компонентов на основе .NET не намного сложнее, чем та же процедура для COM-компонентов. При установке требуются два манифеста:

  • COM-приложениям требуется манифест приложения в стиле Win32, позволяющий определить управляемый компонент;

  • .компонентам на основе .NET для получения сведений об активации, необходимых во время выполнения, требуется манифест компонента.

В этом разделе описывается процесс связывания манифеста приложения с приложением, процесс связывания манифеста компонента с компонентом, а также процесс встраивания манифеста компонента в сборку.

Создание манифеста приложения

  1. С помощью XML-редактора создайте (или измените) манифест приложения, принадлежащий COM-приложению, которое взаимодействует с одним или несколькими управляемыми компонентами.

  2. В начало файла вставьте следующий стандартный заголовок:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    

    Сведения об элементах манифеста и их атрибутах можно получить с помощью поиска в библиотеке MSDN по ключевым словам "справка о манифестах приложений".

  3. Укажите владельца манифеста. В следующем примере владельцем файла манифеста является 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="x86" 
      />
    
  4. Укажите зависимые сборки. В следующем примере 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"
                        language="*"
          />
        </dependentAssembly>
      </dependency>
    </assembly>
    
  5. Присвойте файлу манифеста имя и сохраните файл. Имя манифеста приложения — это имя исполняемого файла сборки с расширением MANIFEST. Например, имя файла манифеста приложения для myComApp.exe — myComApp.exe.manifest.

Манифест приложения можно установить в ту же папку, что и COM-приложение. Либо Его можно добавить в виде ресурса в исполняемый файл (EXE) приложения. Дополнительные сведения можно получить с помощью поиска в библиотеке MSDN по ключевым словам "Параллельные сборки".

Создание манифеста компонента

  1. С помощью XML-редактора создайте манифест компонента, который будет описывать управляемую сборку.

  2. В начало файла вставьте следующий стандартный заголовок:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    
  3. Укажите владельца файла. Элемент <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"
    
  4. Укажите каждый класс сборки. С помощью элемента <clrClass> уникальным образом определите каждый класс управляемой сборки. Элемент, являющийся подэлементом элемента <assembly>, имеет атрибуты, описанные в следующей таблице.

    Атрибут

    Описание

    Обязательность

    clsid

    Идентификатор, который задает активируемый класс.

    Да

    description

    Строка, предоставляющая пользователю сведения о компоненте. Значение по умолчанию — пустая строка.

    Нет

    name

    Строка, представляющая управляемый класс.

    Да

    progid

    Идентификатор, используемый для отложенной активации.

    Нет

    threadingModel

    Модель потоков COM. Значение по умолчанию — "Both".

    Нет

    runtimeVersion

    Этот атрибут не обрабатывается. Если среда выполнения еще не загружена, перед активацией класса будет загружена среда выполнения самой поздней версии. В противном случае используется уже загруженная версия.

    Нет

    tlbid

    Идентификатор библиотеки типов, содержащей сведения о типе для класса.

    Нет

    Все теги атрибутов зависят от регистра. Значения CLSID, ProgID, модели потоков и номер версии среды выполнения можно получить, найдя в библиотеке экспортированных типов сборку с помощью программы просмотра объектов OLE/COM (Oleview.exe).

    Следующий манифест компонента определяет один класс с двумя методами.

    <?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>
    
  5. Присвойте файлу манифеста имя и сохраните файл. Имя манифеста компонента — это имя библиотеки сборки с расширением MANIFEST. Например, файл манифеста библиотеки myManagedComp.dll будет иметь имя myManagedComp.manifest.

Манифест компонента необходимо встроить в сборку в качестве ресурса.

Встраивание манифеста компонента в управляемую сборку

  1. Создайте описание ресурса, содержащее следующую инструкцию:

    RT_MANIFEST 1 myManagedComp.manifest

    В этой инструкции myManagedComp.manifest — это имя встраиваемого манифеста компонента. Для этого примера именем файла сценария является myresource.rc.

  2. Выполните компиляцию сценария с помощью компилятора ресурсов Microsoft Windows (Rc.exe). В командной строке введите следующую команду:

    rc myresource.rc

    Rc.exe создает файл ресурсов myresource.res.

  3. Снова выполните компиляцию исходного файла сборки и укажите файл ресурса с помощью параметра /win32res:

    /win32res:myresource.res
    

    В этом случае myresource.res — имя файла ресурсов, содержащего встроенный ресурс.

См. также

Основные понятия

Требования для COM-взаимодействия, не требующего регистрации

Настройка COM-компонентов для активации без регистрации

Другие ресурсы

COM-взаимодействие без регистрации