Перенаправлення версій збірки

Ви можете перенаправляти прив'язані під час компіляції посилання на складання .NET Framework, сторонніх збірок або збірки вашого власного додатка. Ви можете перенаправляти свій додаток, щоб воно використовувало іншу версію збірки, декількома способами: через політику видавця, за допомогою файлу конфігурації програми або за допомогою файлу конфігурації комп'ютера. У цій статті показується, як прив'язка збірок працює в .NET Framework і як її можна налаштувати.

Прив'язки до збірок .NET Framework іноді перенаправляються в ході процесу, званого уніфікацією збірок. NET Framework включає версію середовища CLR і близько двадцяти збірок .NET Framework, що входять до складу бібліотеки типів. Ці збірки .NET Framework розглядаються середовищем виконання як єдиний блок. За замовчуванням при запуску програми всі посилання на типи в коді, що виконується середовищем виконання, направляються в збірки .NET Framework, які мають той же номер версії, що і середовище виконання, яка завантажується в процесі. Перенаправлення, які реалізуються в цій моделі, - це поведінка за умовчанням для середовища виконання.

Наприклад, якщо ваше додаток посилається на типи в просторі імен System.XML і було зібрано за допомогою .NET Framework 4.5, то воно містить статичні посилання на збірку System.XML, яка поставляється разом із середовищем виконання версії 4.5. Якщо ви хочете перенаправити прив'язану посилання, щоб вона вказувала на збірку System.XML, що поставляється разом з .NET Framework 4, можна помістити відомості про перенаправлення в файл конфігурації програми. Перенаправлення прив'язки в файлі конфігурації для уніфікованої збірки .NET Framework скасовує уніфікацію для цієї збірки.

Крім того, може знадобитися вручну перенаправити прив'язку для збірок сторонніх виробників, якщо є кілька доступних версій.

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

Кожна версія основной_номер .дополнітельний_номер збірки має свій власний файл політики видавця. Наприклад, перенаправлення від версії 2.0.2.222 до версії 2.0.3.000 і від версії 2.0.2.321 до версії 2.0.3.000 призводять до того ж файлу, оскільки вони пов'язані з версією 2.0. Однак перенаправлення від версії 3.0.0.999 до версії 4.0.0.000 призводить до файлу для версії 3.0.999. Кожна основна версія збірки .NET Framework має свій власний файл політики видавця.

Якщо для збірки існує файл політики видавця, Виконавча перевіряє цей файл після перевірки файлу конфігурації програми і маніфесту збірки. Постачальники повинні використовувати файли політики видавця тільки в тому випадку, якщо нова збірка має зворотну сумісність з перенаправляє складанням.

Ви можете обійти політику видавця для свого застосування, задавши параметри у файлі конфігурації програми, як описано в розділі Обхід політики видавця.

Існує кілька різних методів зміни поведінки прив'язки для вашого застосування за допомогою файлу конфігурації програми: можна вручну змінити цей файл, або покластися на автоматичне перенаправлення прив'язки, або вказати поведінку прив'язки шляхом обходу політики видавця.

Ви можете вручну змінити файл конфігурації програми для вирішення проблем зі складанням. Наприклад, якщо постачальник випускає новішу версію збірки, яку ваш додаток використовує без вказівки політики видавця, так як він не гарантує забезпечення сумісності, можна направити додаток на використання нової версії збірки, помістивши відомості про прив'язку збірки в файл конфігурації програми в такий спосіб.

Якщо інший проект в вашому додатку посилається на версію 1.0.0.0 тієї ж збірки, автоматичне перенаправлення прив'язки додає у вихідний файл app.config наступний запис, щоб додаток було уніфіковано з версією 2.0.0.0 цієї збірки:

При необхідності ви можете перевизначити політику видавця в файлі конфігурації програми. Наприклад, нові версії збірок, які оголошені як підтримують зворотну сумісність, можуть все-таки порушувати роботу додатка. Якщо ви хочете обійти політику видавця, додайте елемент в елемент в файлі конфігурації програми і встановіть для атрибута apply значення no. що перевизначити всі попередні установки yes.

Обходьте політику видавця, щоб зберегти працездатність додатки для користувачів, але обов'язково повідомте про проблему постачальнику збірки. Якщо збірка має файл політики видавця, постачальник повинен переконатися, що збірка має зворотну сумісність і клієнти можуть використовувати нову версію в максимальному ступені.

Іноді адміністратору комп'ютера потрібно, щоб всі програми на комп'ютері використовували певну версію збірки. Наприклад, адміністратор може захотіти, щоб кожен додаток використовувало певну версію збірки, так як ця версія усуває пролом в системі безпеки. Якщо збірка перенаправляється в файлі конфігурації комп'ютера, всі програми на цьому комп'ютері, що використовують стару версію, будуть перенаправлені на використання нової версії. Файл конфігурації комп'ютера перевизначає файл конфігурації програми і файл політики видавця. Цей файл знаходиться в каталозі% шлях установки середовища виконання% \ Config. Як правило. NET Framework встановлюється в каталог .rive% \ Windows \ Microsoft.NET \ Framework.

Один і той же формат XML дозволяє вказати перенаправлення прив'язок в файлі конфігурації програми, в файлі конфігурації комп'ютера і в файлі політики видавця. Для перенаправлення з однією версією збірки на іншу використовується елемент . Ядро автоматизації UI маскує будь-які відмінності в структурах, що належать різним частинам UI. Ядро автоматизації UI маскує будь-які відмінності в структурах, що належать різним частинам UI. наприклад, вказує, що Виконавча повинна використовувати версію 2.0.0.0 замість версій збірки від 1.1.0.0 до 1.2.0.0.

Наступний приклад коду демонструє різні сценарії перенаправлення прив'язки. У прикладі вказується перенаправлення для діапазону версій myAssembly і одне перенаправлення прив'язки для mySecondAssembly. У прикладі також вказується, що файл політики видавці не буде перевизначати перенаправлення прив'язок для myThirdAssembly.

Щоб прив'язати збірку, необхідно вказати рядок "urn: schemas-microsoft-com: asm.v1" з атрибутом xmlns в тезі .

Схожі статті