Конфигурирование и настройка Microsoft ASP.NET

Настроечные параметры CLR

Разбить на страницы
Показывать лекцию целиком

Три раздела, описываемые в этой лекции, настраивают параметры для CLR (common language runtime – общая среда выполнения промежуточного языка). Эти параметры задают версию среды выполнения, запуск сборщика мусора и параметры криптографии.

Предостережение Эти параметры должны задаваться только в файле machine.config сервера или в настроечном файле вашего приложения.

В этой лекции приведено описание следующих разделов.

  • <mscorlib>. Настраивает соответствия между дружественными именами и классами криптографии.
  • <runtime>. Определяет версию сборки и запуск сборщика мусора.
  • <startup>. Определяет среду выполнения CLR, используемую при выполнении приложения.
  • Работа с разделом <mscorlib>

    Раздел <mscorlib> содержит параметры для настройки некоторых криптографических возможностей Microsoft .NET Framework. Используемые элементы расположены в подразделе <cryptographySettings>.

    Использование раздела <cryptographySettings>

    Подраздел содержит два элемента, которые создают соответствия для криптографии и соответствия OID<cryptoNameMapping> и <oidMap>.

    Использование элемента <cryptoNameMapping>

    Элемент <cryptoNameMapping> задает соответствия между классами безопасности и их дружественными именами. Он содержит два элемента – <cryptoClasses> и <nameEntry>.

    Использование элемента <cryptoClasses>. Элемент <cryptoClasses> содержит список классов криптографии, которые будут иметь соответствующие им дружественные имена, объявленные с помощью элемента <nameEntry>. Элемент, используемый для создания ссылки на класс криптографии, называется <cryptoClass>. Ниже приведен его синтаксис.

    <cryptoNameMapping>
      <cryptoClasses>
        <cryptoClass CryptoName="CryptoClass, AssemblyName" />
      </cryptoClasses>
    </cryptoNameMapping>

    Ниже показан пример элемента <cryptoClass>, использованного для объявления нового класса.

    <cryptoNameMapping>
      <cryptoClasses>
        <cryptoClass CustomRSA="CustomRSAClass, MyCustomAssembly
          Culture=neutral, PublicKeyToken=b77a5c561934e089,
          Version=1.0.0.0" />
      </cryptoClasses>
    </cryptoNameMapping>

    Для завершения создания соответствия имени можно использовать элемент <nameEntry>.

    Использование элемента <nameEntry>. Элемент <nameEntry> ставит в соответствие классу, объявленному вами в разделе <cryptoClasses>, дружественное имя. Ниже приведен его синтаксис.

    <cryptoNameMapping>
      <nameEntry name="friendly name" class="Crypto Class Name" />
    </cryptoNameMapping>

    В таблице 7.1 содержится перечень свойств элемента <nameEntry>.

    Свойства <nameEntry>
    Свойство Описание
    name Дружественное имя, используемое для создания экземпляра данного класса.
    class Имя класса, указанное в элементе <cryptoClass>.

    Ниже приведен пример использования элемента <nameEntry> со связанным элементом <cryptoClass>.

    <cryptographySettings>
      <cryptoNameMapping>
        <cryptoClasses>
          <cryptoClass CustomRSA="CustomRSAClass, MyCustomAssembly
            Culture=neutral, PublicKeyToken=b77a5c561934e089,
            Version=1.0.0.0" />
        </cryptoClasses>
        <nameEntry name="RSA" class="CustomRSA" />
      </cryptoNameMapping>
    </cryptographySettings>

    Создав такое соответствие, вы можете получить доступ к классу криптографии с помощью метода System.Security.CryptoConfig.CreateFromName. Просто передайте в метод CreateFromName имя класса, указанное в <nameEntry>. Чтобы создать экземпляр класса, объявленного в предыдущем примере, используйте System.Security.CryptoConfig.CreateFromName("RSA").

    Использование элемента <oidMap>

    Элемент <oidMap> создает соответствия идентификаторов объектов OID или ASN.1 и классов. Идентификаторы объектов ASN.1 определяют алгоритм для некоторых криптографических форматов. Этот элемент включает один субэлемент – <oidEntry>.

    Использование элемента <oidEntry>. Элемент <oidEntry> создает соответствие между числом OID и именем класса, указанным в элементе <nameEntry>. Ниже приведен его синтаксис.

    <cryptographySettings>
      <oidMap>
        <oidEntry OID="OID Value" name="Class Name" />
      </oidMap>
    </cryptographySettings>

    В таблице 7.2 содержится перечень свойств элемента <oidEntry>.

    Свойства <oidEntry>
    Свойство Описание
    OID Определяет ASN.1 OID для алгоритма, реализованного вашим классом.
    name Определяет имя класса, указанное в элементе <nameEntry>.

    Ниже приведен пример элемента, использованного для создания соответствия между OID и классом, объявленным в элементе <nameEntry>.

    <cryptographySettings>
      <cryptoNameMapping>
        <cryptoClasses>
          <cryptoClass CustomRSA="CustomRSAClass, MyCustomAssembly
            Culture=neutral, PublicKeyToken= b77a5c561934e089,
            Version=1.0.0.0" />
        </cryptoClasses>
        <nameEntry name="RSA" class="CustomRSA" />
      </cryptoNameMapping>
      <oidMap>
        <oidEntry OID="1.3.14.33.42.46" name="RSA" />
      </oidMap>
    </cryptographySettings>

    Теперь OID будет ассоциирован с классом, объявленным в этом примере.

    Работа с разделом <runtime>

    Раздел <runtime> содержит несколько элементов и параметров, которые настраивают работу общей среды выполнения. Он включает параметры сборщика мусора, а также параметры для определения используемой версии сборки. Хотя этот раздел не часто используется в коде ASP.NET, вам следует познакомиться с его опциями.

    Использование элемента <developmentMode>

    Элемент <developmentMode> указывает среде выполнения производить поиск сборок в директориях, заданных в переменной среды окружения DEVPATH. Ниже приведен синтаксис этого элемента.

    <developmentMode developerInstallation="true | false" />

    В таблице 7.3 содержится свойство этого элемента.

    Свойство <developmentMode>
    Свойство Описание
    developerInstallation Определяет, будет ли среда выполнения искать сборки в переменной среды окружения DEVPATH.

    true Среда выполнения использует этот путь.

    false Среда выполнения не использует этот путь.

    Ниже приведен пример этого элемента.

    <runtime>
      <developmentMode developerInstallation="true" />
    </runtime>

    В примере задается указание среде выполнения производить поиск сборок в директориях, указанных в переменной среды окружения DEVPATH. Среда выполнения не смотрит на информацию о версии; она использует первую найденную сборку.

    Использование раздела <assemblyBinding>

    Раздел <assemblyBinding> содержит несколько подразделов и атрибутов. Вы можете использовать этот раздел для указания перенаправлений версий сборок и расположения других сборок. Сначала приведем описание атрибутов раздела <assemblyBinding>, а затем перейдем к субэлементам. Ниже приведен синтаксис этого раздела.

    <assemblyBinding xmlns="xml namespace"
      appliesTo="framework version" />

    В таблице 7.4 содержится перечень свойств этого раздела.

    Свойства <assemblyBinding>
    Свойство Описание
    xmlns Определяет пространство имен XML, которое требуется для привязки сборки.
    appliesTo Определяет версию .NET Framework, к которой применяется перенаправление данной сборки. Атрибут был добавлен в версии 1.1 и игнорируется версией 1.0.

    Ниже показан пример того, как следует использовать свойства этого раздела.

    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"
      appliesTo="v1.0.3705" />

    Здесь ограничивается перенаправление сборки только теми приложениями, которые выполняются в .NET Framework версии 1.0.

    Элемент <assemblyBinding> содержит несколько субэлементов, с которыми вы познакомитесь дальше.

    Использование раздела <dependentAssembly>

    Элемент <dependentAssembly> содержит все спецификации для каждой сборки, которую нужно перенаправить. Он включает информацию об идентификации, месте расположения, список перенаправляемых версий и тому подобное. Этот элемент не имеет атрибутов, но содержит несколько субэлементов.

    Использование элемента <assemblyIdentity>. Элемент <assemblyIdentity> содержит информацию о сборке, включая имя сборки, последовательность открытого ключа и культуру. Каждый элемент <dependentAssembly> должен содержать элемент <assemblyIdentity>. Ниже приведен синтаксис этого элемента.

    <dependentAssembly>
      <assemblyIdentity name="assembly name" publicKeyToken=
        "assembly public key token" culture="assembly culture " />
    </dependentAssembly>

    В таблице 7.5 содержится перечень свойств этого элемента.

    Свойства <assemblyIdentity>
    Свойство Описание
    name Определяет имя сборки и является обязательным.
    publicKeyToken Определяет последовательность открытого ключа, который входит строгим именем сборки.
    culture Определяет страну или регион сборки (обычно равно neutral).

    Ниже приведен пример этого элемента.

    <dependentAssembly>
      <assemblyIdentity name="netMail"
        publicKeyToken="a1690a5ea44bab32" culture="neutral" />
    </dependentAssembly>

    Использование элемента <codeBase>. Элемент <codeBase> указывает среде выполнения CLR, где искать сборку. Ниже приведен синтаксис этого элемента.

    <dependentAssembly>
      <codeBase version="assembly version"
        href="url location of assembly" />
    </dependentAssembly>

    В таблице 7.6 содержится перечень свойств элемента <codeBase>.

    Свойства <codeBase>
    Свойство Описание
    version Определяет версию сборки, к которой применяется данный элемент.
    href Определяет расположение сборки.

    Ниже приведен пример этого элемента.

    <dependentAssembly>
      <assemblyIdentity name="netMail"
        publicKeyToken="a1690a5ea44bab32" culture="neutral" />
      <codeBase version="1.0.0.0"
        href="http://www.microsoft.com/netmail.dll" />
    </dependentAssembly>

    Использование элемента <bindingRedirect>. Элемент <bindingRedirect> перенаправляет одну версию сборки на другую. Ниже приведен синтаксис этого элемента.

    <dependentAssembly>
      <bindingRedirect oldVersion="old assembly version"
        newVersion="new assembly version" />
    </dependentAssembly>

    В таблице 7.7 содержится перечень свойств элемента <bindingRedirect>.

    Свойства <bindingRedirect>
    Свойство Описание
    oldVersion Определяет версию сборки, которая будет перенаправлена. Можно также ввести диапазон номеров версий (1.0.0.0 – 2.0.0.1).
    newVersion Определяет версию сборки, на которую будет перенаправлен запрос.

    Ниже приведен пример этого элемента.

    <dependentAssembly>
      <assemblyIdentity name="netMail"
        publicKeyToken="a1690a5ea44bab32" culture="neutral" />
      <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" />
    </dependentAssembly>

    Когда ваше приложение производит доступ к сборке, вместо версии 1.0.0.0 сборки будет использоваться версия 2.0.0.0.

    Использование элемента <publisherPolicy>. Элемент <publisherPolicy> может использоваться внутри элемента <dependentAssembly> или внутри элемента <assemblyBinding>. Автор сборки предоставляет файл политики издателя, который содержит информацию о переходе от одной сборки к другой. Ниже приведен синтаксис этого элемента.

    <publisherPolicy apply="yes | no" />
      lists the property for this element.
    Свойства <publisherPolicy>
    Свойство Описание
    apply Определяет наличие политики издателя.

    yes Политика издателя имеется и применяется.

    no Политика издателя не применяется.

    Ниже приведен пример того, как следует использовать этот элемент.

    <dependentAssembly>
      <assemblyIdentity name="netMail"
        publicKeyToken="a1690a5ea44bab32" culture="neutral" />
      <publisherPolicy apply="no" />
    </dependentAssembly>

    Данный пример не применяет политику издателя для сборки netMail. Вы также можете использовать этот элемент в элементе <assemblyBinding>.

    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <publisherPolicy apply="no" />
    </assemblyBinding>

    Данный пример не применяет политику издателя для всех приложений.

    Использование элемента <probing>

    Элемент <probing> - это субэлемент элемента <assemblyBinding>. В элементе <probing> можно указать несколько поддиректорий, в которых будет производиться поиск сборок при их загрузке. Ниже приведен синтаксис этого элемента.

    <runtime>
      <assemblyBinding>
        <probing privatePath="sub directories" />
      </assemblyBinding>
    </runtime>

    Свойства элемента <probing> приведены в табл. 7.9.

    Свойства <probing>
    Свойство Описание
    privatePath Определяет список директорий, разделенных точкой с запятой, в которых среда выполнения производит поиск.

    Ниже приведен пример элемента <probing>.

    <runtime>
      <assemblyBinding>
        <probing privatePath="bin;bin\netmail;bin2" />
      </assemblyBinding>
    </runtime>

    Здесь среда выполнения включит в поиск сборок директории bin, bin\netmail и bin2.

    Использование элемента <publisherPolicy>

    В дополнение к использованию элемента <publisherPolicy> в элементе <dependentAssembly> можно использовать элемент <publisherPolicy> как субэлемент <assemblyBinding>. При использовании его в качестве субэлемента <assemblyBinding> элемент <publisherPolicy> применяется ко всем сборкам, а не только к одному приложению. Синтаксис и атрибуты элемента <publisherPolicy> аналогичны таковым субэлемента в элементе <dependentAssembly>.

    Использование элемента <qualifyAssembly>

    Элемент <qualifyAssembly> задает соответствие между частичными именами сборок и их полными именами. Ниже приведен синтаксис этого элемента.

    <runtime>
      <assemblyBinding>
        <qualifyAssembly partialName="partial name'
          fullName="full name' />
      </assemblyBinding>
    </runtime>

    Свойства этого элемента приведены в табл. 7.10.

    Свойства <qualifyAssembly>
    Свойство Описание
    partialName Определяет частичное имя сборки.
    fullName Определяет полное имя сборки, находящейся в глобальном кэше сборок.

    Ниже приведен пример этого элемента.

    <runtime>
      <assemblyBinding>
        <qualifyAssembly partialName="netmail"
          fullName="netmail, version 2.0.0.0,
          publickeyToken=a1690a5ea44bab32, culture=neutral" />
      </assemblyBinding>
    </runtime>

    Теперь, при обращении к сборке netmail приложение будет перенаправляться на имя этой сборки в глобальном кэше сборок.

    Использование элемента <gcConcurrent>

    Элемент <gcConcurrent> определяет, будет ли среда выполнения CLR запускать сборщик мусора в текущем потоке выполнения или в отдельном потоке. Ниже приведен синтаксис этого элемента.

    <runtime>
      <gcConcurrent enabled="true | false" />
    </runtime>

    В таблице 7.11 содержится свойство этого элемента.

    Свойства <gcConcurrent>
    Свойство Описание
    enabled Определяет запуск сборщика мусора в одном потоке с приложением.

    true Сборщик мусора запускается в одном потоке с приложением.

    false Сборщик мусора запускается в отдельном потоке выполнения.

    Ниже приведен пример этого элемента.

    <runtime>
      <gcConcurrent enabled="false" />
    </runtime>

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

    Работа с разделом <startup>

    Данный раздел настроечного файла определяет версию среды выполнения CLR, используемую при запуске приложения.

    Использование элемента <requiredRuntime>

    Элемент <requiredRuntime> определяет версию .NET Framework для запуска данного приложения. Он используется только приложениями, созданными посредством.NET Framework версии 1.0. Ниже приведен синтаксис этого элемента.

    <startup>
      <requiredRuntime version="framework version"
        safemode="true | false" />
    </startup>

    Свойства элемента <requiredRuntime> перечислены в табл. 7.12.

    Свойства <requiredRuntime>
    Свойства Описание
    version Определяет версию .NET Framework, которая требуется для приложения. Значение должно в точности соответствовать имени директории, в которой находится .NET Framework.
    safemode Определяет, будет ли приложение работать в "безопасном" режиме. При запуске приложения в безопасном режиме оно не проверяет в реестре версию среды выполнения.

    true Приложение работает в безопасном режиме.

    false Приложение не работает в безопасном режиме.

    Ниже приведен пример этого элемента.

    <startup>
      <requiredRuntime version="v1.0.3705" safemode="false" />
    </startup>

    Здесь задается использование приложением только версии 1.0 среды .NET Framework, а также запрещается выполнение в безопасном режиме, позволяя приложению обратиться за информацией о версии к реестру.

    Использование элемента <supportedRuntime>

    Элемент <supportedRuntime> определяет версию .NET Framework, которая будет поддерживаться приложением. Этот элемент работает с приложениями, созданными с использованием .NET Framework версии 1.1. Ниже приведен синтаксис этого элемента.

    <startup>
      <supportedRuntime version="version number" />
    </startup>

    В таблице 7.13 содержится свойство элемента <supportedRuntime>.

    Свойство <supportedRuntime>
    Свойство Описание
    version Определяет версию .NET Framework, которая поддерживается приложением. Значение должно в точности соответствовать имени директории .NET Framework.

    Ниже приведен пример этого элемента.

    <startup>
      <supportedRuntime version="v1.0.3705" />
      <supportedRuntime version="v1.1.4122" />
    </startup>

    Здесь указывается, что приложение поддерживает обе версии .NET Framework – версию 1.0 и версию 1.1.

    Ключевые моменты

  • Раздел <mscorlib> предоставляет разделы и элементы, которые создают соответствия между дружественными именами и OID и классами криптографии.
  • Раздел <runtime> содержит параметры для настройки сборок, используемых вместе с приложением.
  • Элемент <gcConcurrent> определяет запуск сборщика мусора в том же потоке выполнения, что и приложение, или в отдельном потоке.
  • Раздел <startup> определяет версию .NET Framework для запуска приложения.
  • Страницы:

    Три раздела, описываемые в этой лекции, настраивают параметры для CLR (common language runtime – общая среда выполнения промежуточного языка). Эти параметры задают версию среды выполнения, запуск сборщика мусора и параметры криптографии.

    Предостережение Эти параметры должны задаваться только в файле machine.config сервера или в настроечном файле вашего приложения.

    В этой лекции приведено описание следующих разделов.

  • <mscorlib>. Настраивает соответствия между дружественными именами и классами криптографии.
  • <runtime>. Определяет версию сборки и запуск сборщика мусора.
  • <startup>. Определяет среду выполнения CLR, используемую при выполнении приложения.
  • Работа с разделом <mscorlib>

    Раздел <mscorlib> содержит параметры для настройки некоторых криптографических возможностей Microsoft .NET Framework. Используемые элементы расположены в подразделе <cryptographySettings>.

    Использование раздела <cryptographySettings>

    Подраздел содержит два элемента, которые создают соответствия для криптографии и соответствия OID<cryptoNameMapping> и <oidMap>.

    Использование элемента <cryptoNameMapping>

    Элемент <cryptoNameMapping> задает соответствия между классами безопасности и их дружественными именами. Он содержит два элемента – <cryptoClasses> и <nameEntry>.

    Использование элемента <cryptoClasses>. Элемент <cryptoClasses> содержит список классов криптографии, которые будут иметь соответствующие им дружественные имена, объявленные с помощью элемента <nameEntry>. Элемент, используемый для создания ссылки на класс криптографии, называется <cryptoClass>. Ниже приведен его синтаксис.

    <cryptoNameMapping>
      <cryptoClasses>
        <cryptoClass CryptoName="CryptoClass, AssemblyName" />
      </cryptoClasses>
    </cryptoNameMapping>

    Ниже показан пример элемента <cryptoClass>, использованного для объявления нового класса.

    <cryptoNameMapping>
      <cryptoClasses>
        <cryptoClass CustomRSA="CustomRSAClass, MyCustomAssembly
          Culture=neutral, PublicKeyToken=b77a5c561934e089,
          Version=1.0.0.0" />
      </cryptoClasses>
    </cryptoNameMapping>

    Для завершения создания соответствия имени можно использовать элемент <nameEntry>.

    Использование элемента <nameEntry>. Элемент <nameEntry> ставит в соответствие классу, объявленному вами в разделе <cryptoClasses>, дружественное имя. Ниже приведен его синтаксис.

    <cryptoNameMapping>
      <nameEntry name="friendly name" class="Crypto Class Name" />
    </cryptoNameMapping>

    В таблице 7.1 содержится перечень свойств элемента <nameEntry>.

    Свойства <nameEntry>
    Свойство Описание
    name Дружественное имя, используемое для создания экземпляра данного класса.
    class Имя класса, указанное в элементе <cryptoClass>.

    Ниже приведен пример использования элемента <nameEntry> со связанным элементом <cryptoClass>.

    <cryptographySettings>
      <cryptoNameMapping>
        <cryptoClasses>
          <cryptoClass CustomRSA="CustomRSAClass, MyCustomAssembly
            Culture=neutral, PublicKeyToken=b77a5c561934e089,
            Version=1.0.0.0" />
        </cryptoClasses>
        <nameEntry name="RSA" class="CustomRSA" />
      </cryptoNameMapping>
    </cryptographySettings>

    Создав такое соответствие, вы можете получить доступ к классу криптографии с помощью метода System.Security.CryptoConfig.CreateFromName. Просто передайте в метод CreateFromName имя класса, указанное в <nameEntry>. Чтобы создать экземпляр класса, объявленного в предыдущем примере, используйте System.Security.CryptoConfig.CreateFromName("RSA").

    Использование элемента <oidMap>

    Элемент <oidMap> создает соответствия идентификаторов объектов OID или ASN.1 и классов. Идентификаторы объектов ASN.1 определяют алгоритм для некоторых криптографических форматов. Этот элемент включает один субэлемент – <oidEntry>.

    Использование элемента <oidEntry>. Элемент <oidEntry> создает соответствие между числом OID и именем класса, указанным в элементе <nameEntry>. Ниже приведен его синтаксис.

    <cryptographySettings>
      <oidMap>
        <oidEntry OID="OID Value" name="Class Name" />
      </oidMap>
    </cryptographySettings>

    В таблице 7.2 содержится перечень свойств элемента <oidEntry>.

    Свойства <oidEntry>
    Свойство Описание
    OID Определяет ASN.1 OID для алгоритма, реализованного вашим классом.
    name Определяет имя класса, указанное в элементе <nameEntry>.

    Ниже приведен пример элемента, использованного для создания соответствия между OID и классом, объявленным в элементе <nameEntry>.

    <cryptographySettings>
      <cryptoNameMapping>
        <cryptoClasses>
          <cryptoClass CustomRSA="CustomRSAClass, MyCustomAssembly
            Culture=neutral, PublicKeyToken= b77a5c561934e089,
            Version=1.0.0.0" />
        </cryptoClasses>
        <nameEntry name="RSA" class="CustomRSA" />
      </cryptoNameMapping>
      <oidMap>
        <oidEntry OID="1.3.14.33.42.46" name="RSA" />
      </oidMap>
    </cryptographySettings>

    Теперь OID будет ассоциирован с классом, объявленным в этом примере.

    Работа с разделом <runtime>

    Раздел <runtime> содержит несколько элементов и параметров, которые настраивают работу общей среды выполнения. Он включает параметры сборщика мусора, а также параметры для определения используемой версии сборки. Хотя этот раздел не часто используется в коде ASP.NET, вам следует познакомиться с его опциями.

    Использование элемента <developmentMode>

    Элемент <developmentMode> указывает среде выполнения производить поиск сборок в директориях, заданных в переменной среды окружения DEVPATH. Ниже приведен синтаксис этого элемента.

    <developmentMode developerInstallation="true | false" />

    В таблице 7.3 содержится свойство этого элемента.

    Свойство <developmentMode>
    Свойство Описание
    developerInstallation Определяет, будет ли среда выполнения искать сборки в переменной среды окружения DEVPATH.

    true Среда выполнения использует этот путь.

    false Среда выполнения не использует этот путь.

    Ниже приведен пример этого элемента.

    <runtime>
      <developmentMode developerInstallation="true" />
    </runtime>

    В примере задается указание среде выполнения производить поиск сборок в директориях, указанных в переменной среды окружения DEVPATH. Среда выполнения не смотрит на информацию о версии; она использует первую найденную сборку.

    Использование раздела <assemblyBinding>

    Раздел <assemblyBinding> содержит несколько подразделов и атрибутов. Вы можете использовать этот раздел для указания перенаправлений версий сборок и расположения других сборок. Сначала приведем описание атрибутов раздела <assemblyBinding>, а затем перейдем к субэлементам. Ниже приведен синтаксис этого раздела.

    <assemblyBinding xmlns="xml namespace"
      appliesTo="framework version" />

    В таблице 7.4 содержится перечень свойств этого раздела.

    Свойства <assemblyBinding>
    Свойство Описание
    xmlns Определяет пространство имен XML, которое требуется для привязки сборки.
    appliesTo Определяет версию .NET Framework, к которой применяется перенаправление данной сборки. Атрибут был добавлен в версии 1.1 и игнорируется версией 1.0.

    Ниже показан пример того, как следует использовать свойства этого раздела.

    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"
      appliesTo="v1.0.3705" />

    Здесь ограничивается перенаправление сборки только теми приложениями, которые выполняются в .NET Framework версии 1.0.

    Элемент <assemblyBinding> содержит несколько субэлементов, с которыми вы познакомитесь дальше.

    Использование раздела <dependentAssembly>

    Элемент <dependentAssembly> содержит все спецификации для каждой сборки, которую нужно перенаправить. Он включает информацию об идентификации, месте расположения, список перенаправляемых версий и тому подобное. Этот элемент не имеет атрибутов, но содержит несколько субэлементов.

    Использование элемента <assemblyIdentity>. Элемент <assemblyIdentity> содержит информацию о сборке, включая имя сборки, последовательность открытого ключа и культуру. Каждый элемент <dependentAssembly> должен содержать элемент <assemblyIdentity>. Ниже приведен синтаксис этого элемента.

    <dependentAssembly>
      <assemblyIdentity name="assembly name" publicKeyToken=
        "assembly public key token" culture="assembly culture " />
    </dependentAssembly>

    В таблице 7.5 содержится перечень свойств этого элемента.

    Свойства <assemblyIdentity>
    Свойство Описание
    name Определяет имя сборки и является обязательным.
    publicKeyToken Определяет последовательность открытого ключа, который входит строгим именем сборки.
    culture Определяет страну или регион сборки (обычно равно neutral).

    Ниже приведен пример этого элемента.

    <dependentAssembly>
      <assemblyIdentity name="netMail"
        publicKeyToken="a1690a5ea44bab32" culture="neutral" />
    </dependentAssembly>

    Использование элемента <codeBase>. Элемент <codeBase> указывает среде выполнения CLR, где искать сборку. Ниже приведен синтаксис этого элемента.

    <dependentAssembly>
      <codeBase version="assembly version"
        href="url location of assembly" />
    </dependentAssembly>

    В таблице 7.6 содержится перечень свойств элемента <codeBase>.

    Свойства <codeBase>
    Свойство Описание
    version Определяет версию сборки, к которой применяется данный элемент.
    href Определяет расположение сборки.

    Ниже приведен пример этого элемента.

    <dependentAssembly>
      <assemblyIdentity name="netMail"
        publicKeyToken="a1690a5ea44bab32" culture="neutral" />
      <codeBase version="1.0.0.0"
        href="http://www.microsoft.com/netmail.dll" />
    </dependentAssembly>

    Использование элемента <bindingRedirect>. Элемент <bindingRedirect> перенаправляет одну версию сборки на другую. Ниже приведен синтаксис этого элемента.

    <dependentAssembly>
      <bindingRedirect oldVersion="old assembly version"
        newVersion="new assembly version" />
    </dependentAssembly>

    В таблице 7.7 содержится перечень свойств элемента <bindingRedirect>.

    Свойства <bindingRedirect>
    Свойство Описание
    oldVersion Определяет версию сборки, которая будет перенаправлена. Можно также ввести диапазон номеров версий (1.0.0.0 – 2.0.0.1).
    newVersion Определяет версию сборки, на которую будет перенаправлен запрос.

    Ниже приведен пример этого элемента.

    <dependentAssembly>
      <assemblyIdentity name="netMail"
        publicKeyToken="a1690a5ea44bab32" culture="neutral" />
      <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" />
    </dependentAssembly>

    Когда ваше приложение производит доступ к сборке, вместо версии 1.0.0.0 сборки будет использоваться версия 2.0.0.0.

    Использование элемента <publisherPolicy>. Элемент <publisherPolicy> может использоваться внутри элемента <dependentAssembly> или внутри элемента <assemblyBinding>. Автор сборки предоставляет файл политики издателя, который содержит информацию о переходе от одной сборки к другой. Ниже приведен синтаксис этого элемента.

    <publisherPolicy apply="yes | no" />
      lists the property for this element.
    Свойства <publisherPolicy>
    Свойство Описание
    apply Определяет наличие политики издателя.

    yes Политика издателя имеется и применяется.

    no Политика издателя не применяется.

    Ниже приведен пример того, как следует использовать этот элемент.

    <dependentAssembly>
      <assemblyIdentity name="netMail"
        publicKeyToken="a1690a5ea44bab32" culture="neutral" />
      <publisherPolicy apply="no" />
    </dependentAssembly>

    Данный пример не применяет политику издателя для сборки netMail. Вы также можете использовать этот элемент в элементе <assemblyBinding>.

    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <publisherPolicy apply="no" />
    </assemblyBinding>

    Данный пример не применяет политику издателя для всех приложений.

    Использование элемента <probing>

    Элемент <probing> - это субэлемент элемента <assemblyBinding>. В элементе <probing> можно указать несколько поддиректорий, в которых будет производиться поиск сборок при их загрузке. Ниже приведен синтаксис этого элемента.

    <runtime>
      <assemblyBinding>
        <probing privatePath="sub directories" />
      </assemblyBinding>
    </runtime>

    Свойства элемента <probing> приведены в табл. 7.9.

    Свойства <probing>
    Свойство Описание
    privatePath Определяет список директорий, разделенных точкой с запятой, в которых среда выполнения производит поиск.

    Ниже приведен пример элемента <probing>.

    <runtime>
      <assemblyBinding>
        <probing privatePath="bin;bin\netmail;bin2" />
      </assemblyBinding>
    </runtime>

    Здесь среда выполнения включит в поиск сборок директории bin, bin\netmail и bin2.

    Использование элемента <publisherPolicy>

    В дополнение к использованию элемента <publisherPolicy> в элементе <dependentAssembly> можно использовать элемент <publisherPolicy> как субэлемент <assemblyBinding>. При использовании его в качестве субэлемента <assemblyBinding> элемент <publisherPolicy> применяется ко всем сборкам, а не только к одному приложению. Синтаксис и атрибуты элемента <publisherPolicy> аналогичны таковым субэлемента в элементе <dependentAssembly>.

    Использование элемента <qualifyAssembly>

    Элемент <qualifyAssembly> задает соответствие между частичными именами сборок и их полными именами. Ниже приведен синтаксис этого элемента.

    <runtime>
      <assemblyBinding>
        <qualifyAssembly partialName="partial name'
          fullName="full name' />
      </assemblyBinding>
    </runtime>

    Свойства этого элемента приведены в табл. 7.10.

    Свойства <qualifyAssembly>
    Свойство Описание
    partialName Определяет частичное имя сборки.
    fullName Определяет полное имя сборки, находящейся в глобальном кэше сборок.

    Ниже приведен пример этого элемента.

    <runtime>
      <assemblyBinding>
        <qualifyAssembly partialName="netmail"
          fullName="netmail, version 2.0.0.0,
          publickeyToken=a1690a5ea44bab32, culture=neutral" />
      </assemblyBinding>
    </runtime>

    Теперь, при обращении к сборке netmail приложение будет перенаправляться на имя этой сборки в глобальном кэше сборок.

    Использование элемента <gcConcurrent>

    Элемент <gcConcurrent> определяет, будет ли среда выполнения CLR запускать сборщик мусора в текущем потоке выполнения или в отдельном потоке. Ниже приведен синтаксис этого элемента.

    <runtime>
      <gcConcurrent enabled="true | false" />
    </runtime>

    В таблице 7.11 содержится свойство этого элемента.

    Свойства <gcConcurrent>
    Свойство Описание
    enabled Определяет запуск сборщика мусора в одном потоке с приложением.

    true Сборщик мусора запускается в одном потоке с приложением.

    false Сборщик мусора запускается в отдельном потоке выполнения.

    Ниже приведен пример этого элемента.

    <runtime>
      <gcConcurrent enabled="false" />
    </runtime>

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

    Работа с разделом <startup>

    Данный раздел настроечного файла определяет версию среды выполнения CLR, используемую при запуске приложения.

    Использование элемента <requiredRuntime>

    Элемент <requiredRuntime> определяет версию .NET Framework для запуска данного приложения. Он используется только приложениями, созданными посредством.NET Framework версии 1.0. Ниже приведен синтаксис этого элемента.

    <startup>
      <requiredRuntime version="framework version"
        safemode="true | false" />
    </startup>

    Свойства элемента <requiredRuntime> перечислены в табл. 7.12.

    Свойства <requiredRuntime>
    Свойства Описание
    version Определяет версию .NET Framework, которая требуется для приложения. Значение должно в точности соответствовать имени директории, в которой находится .NET Framework.
    safemode Определяет, будет ли приложение работать в "безопасном" режиме. При запуске приложения в безопасном режиме оно не проверяет в реестре версию среды выполнения.

    true Приложение работает в безопасном режиме.

    false Приложение не работает в безопасном режиме.

    Ниже приведен пример этого элемента.

    <startup>
      <requiredRuntime version="v1.0.3705" safemode="false" />
    </startup>

    Здесь задается использование приложением только версии 1.0 среды .NET Framework, а также запрещается выполнение в безопасном режиме, позволяя приложению обратиться за информацией о версии к реестру.

    Использование элемента <supportedRuntime>

    Элемент <supportedRuntime> определяет версию .NET Framework, которая будет поддерживаться приложением. Этот элемент работает с приложениями, созданными с использованием .NET Framework версии 1.1. Ниже приведен синтаксис этого элемента.

    <startup>
      <supportedRuntime version="version number" />
    </startup>

    В таблице 7.13 содержится свойство элемента <supportedRuntime>.

    Свойство <supportedRuntime>
    Свойство Описание
    version Определяет версию .NET Framework, которая поддерживается приложением. Значение должно в точности соответствовать имени директории .NET Framework.

    Ниже приведен пример этого элемента.

    <startup>
      <supportedRuntime version="v1.0.3705" />
      <supportedRuntime version="v1.1.4122" />
    </startup>

    Здесь указывается, что приложение поддерживает обе версии .NET Framework – версию 1.0 и версию 1.1.

    Ключевые моменты

  • Раздел <mscorlib> предоставляет разделы и элементы, которые создают соответствия между дружественными именами и OID и классами криптографии.
  • Раздел <runtime> содержит параметры для настройки сборок, используемых вместе с приложением.
  • Элемент <gcConcurrent> определяет запуск сборщика мусора в том же потоке выполнения, что и приложение, или в отдельном потоке.
  • Раздел <startup> определяет версию .NET Framework для запуска приложения.
  • Вернуться к учебному плану