Шаг 1. Проверка файлов конфигурации

Для управления процессом привязки сборок на различных уровнях доступны три XML-файла:

  • файл конфигурации приложения;

  • файл политики издателя;

  • файл конфигурации компьютера.

В этих использующих общий синтаксис файлах содержатся сведения о перенаправлении привязки, расположении кода, режимах привязки конкретных сборок и т. д. Каждый файл конфигурации может содержать элемент <assemblyBinding>, перенаправляющий процесс привязки. Дочерние элементы элемента <assemblyBinding> включают элемент <dependentAssembly>. Дочерние элементы элемента <dependentAssembly> включают элементы <assemblyIdentity>, <bindingRedirect> и <codeBase>.

ПримечаниеПримечание

Сведения о конфигурации хранятся во всех трех файлах конфигурации, но не все элементы можно использовать во всех файлах конфигурации.Например, режим привязки и закрытый путь можно указывать только в файле конфигурации приложения.Полный список сведений, включаемых в каждый из файлов, см. в разделе Настройка приложений.

Файл конфигурации приложения

В первую очередь среда CLR проверяет файл конфигурации приложения на наличие информации, которая переопределяет информацию о версии, хранящуюся в манифесте вызывающей сборки. Файл конфигурации приложения можно развертывать вместе с приложением, однако он не требуется для исполнения приложения. Обычно получение этого файла происходит почти мгновенно, однако если приложение размещено на удаленном компьютере, например при работе с веб-приложениями через Internet Explorer, файл конфигурации необходимо загружать.

В случае клиентских приложений файл конфигурации приложения расположен в том же каталоге, что и исполняемый файл приложения, и имеет такое же базовое имя, но с расширением CONFIG. Например файлом конфигурации приложения C:\Program Files\Myapp\Myapp.exe будет C:\Program Files\Myapp\Myapp.exe.config. В случае работы через обозреватель в HTML-файле должен быть элемент <link>, явным образом указывающий на файл конфигурации.

Ниже показан пример кода простого файла конфигурации приложения. В этом примере элемент TextWriterTraceListener добавляется в коллекцию Listeners, чтобы включить запись отладочной информации в файл.

<configuration>
   <system.diagnostics>
      <trace useGlobalLock="false" autoflush="true" indentsize="0">
         <listeners>
            <add name="myListener" type="System.Diagnostics.TextWriterTraceListener, system version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="c:\myListener.log" />
         </listeners>
      </trace>
   </system.diagnostics>
</configuration>

Файл политики издателя

После этого среда выполнения проверяет файл политики издателя, если таковой существует. Файлы политики издателя распространяются издателем компонента в виде исправлений или обновлений для общего компонента. Эти файлы содержат подготовленную издателем информацию о совместимости общего компонента и ссылки на новые версии сборок. В отличие от файлов конфигурации приложения и компьютера файлы политики издателя хранятся в собственной сборке, которая должна устанавливаться в глобальный кэш сборок.

Ниже приведен пример файла конфигурации политики издателя.

<configuration>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

            <dependentAssembly>
                <assemblyIdentity name="asm6" publicKeyToken="c0305c36380ba429" /> 
                <bindingRedirect oldVersion="3.0.0.0" newVersion="2.0.0.0"/>  
            </dependentAssembly>

        </assemblyBinding>
    </runtime>
</configuration>

Чтобы создать сборку, можно воспользоваться средством Al.exe (компоновщик сборок) и выполнить команду следующего вида:

Al.exe /link:asm6.exe.config /out:policy.3.0.asm6.dll /keyfile: compatkey.dat /v:3.0.0.0

compatkey.dat — это файл ключа строгого имени. Эта команда создает сборку со строгим именем, которую можно поместить в глобальный кэш сборок.

ПримечаниеПримечание

Политика издателя влияет на работу всех приложений, которые используют общий компонент.

Файл конфигурации политики издателя переопределяет сведения о версии, указанные в приложении (т. е. в манифесте сборки или в файле конфигурации приложения). Если в файле конфигурации приложения нет оператора перенаправления версии, указанной в манифесте сборки, то файл политики издателя переопределяет версию в манифесте сборки. Если же в файле конфигурации приложения есть оператор перенаправления, то файл политики издателя переопределяет эту версию, а не версию, указанную в манифесте.

Файл политики издателя используется, если общий компонент обновляется и нужно, чтобы все приложения, использующие этот компонент, получили его новую версию. Указанные в файле политики издателя параметры переопределяют параметры файла конфигурации приложения, если только в файле конфигурации приложения не включен безопасный режим.

Безопасный режим

Файлы политики издателя обычно явным образом устанавливаются как часть пакета обновления или обновления программы. Если обновленный общий компонент вызывает проблемы, можно воспользоваться безопасным режимом, чтобы не учитывать переопределяющие параметры файла политики издателя. Безопасный режим включается с помощью элемента <publisherPolicy apply="yes |no"/> в файле конфигурации приложении. Этот элемент определяет, следует ли удалять информацию политики издателя из процесса привязки.

Безопасный режим можно включить для всего приложения или для отдельных сборок. Это значит, что можно отключить политику для всех сборок в составе приложения или включить ее только для части сборок. Чтобы применить политику издателя на уровне отдельных сборок приложения, установите параметр <publisherPolicy apply=no/> и с помощью элемента <dependentAssembly> укажите сборки, на которые должно распространяться действие политики. Чтобы применить политику издателя ко всем сборкам приложения, установите параметр <publisherPolicy apply=no/> без указания элементов зависимых сборок. Дополнительные сведения о файлах конфигурации см. в разделе Файлы конфигурации.

Файлы конфигурации компьютера

В третью очередь среда выполнения проверяет файл конфигурации компьютера. Этот файл, который называется Machine.config, расположен на локальном компьютере в подкаталоге Config корневого каталога, в котором установлена среда выполнения. С помощью этого файла администраторы могут настраивать ограничения привязки сборок, действующие только на этом компьютере. Указанные в файле конфигурации компьютера параметры имеют приоритет по отношению ко всем остальным параметрам; однако это не означает, что в этот файл следует включать все возможные параметры. Версия, определяемая файлом политики администратора, является окончательной и не может быть переопределена. Действие переопределенных параметров, заданных в файле Machine.config, распространяется на все приложения. Дополнительные сведения о файлах конфигурации см. в разделе Файлы конфигурации.

См. также

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

Обнаружение сборок в среде выполнения

Шаг 2. Проверка наличия ранее связанных сборок

Шаг 3. Проверка глобального кэша сборок

Шаг 4. Обнаружение сборки с помощью базы кода или проверки

Частичные ссылки на сборки