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


Разрешение сборок во время разработки

Существует распространенное заблуждение, что при добавлении ссылки на сборку через вкладку ".NET" диалогового окна "Добавление ссылки" указывается сборка в глобальном кэше сборок.Это не так.В действительности ссылка указывает на промежуточную базовую сборку, которая содержит все данные о типах и сигнатурах, но не всегда содержит код.На вкладке ".NET" приведен список базовых сборок, соответствующих сборкам среды выполнения в платформе .NET Framework.Кроме того, на ней приведен список базовых сборок, которые соответствуют сборкам среды выполнения в зарегистрированных папках AssemblyFoldersEx, используемых сторонними разработчиками.

Настройка для различных версий

Visual Studio 2012 позволяет ориентироваться на версии платформы .NET Framework, работающие со средой CLR версии 2.0 или версии 4.Это включает, версий платформы .NET Framework 2.0, 3,0, 3.5, 4 и 4,5 и версий 1.0, 2.0 и 3,0 Silverlight.При выпуске новой версии платформы .NET Framework, основанной на среде CLR версии 2.0 или версии 4, .NET Framework можно установить с использованием пакета настройки для определенной версии и эта платформа будет использоваться в качестве целевой в Visual Studio.

Принцип работы разрешения типов

Во время выполнения среда CLR разрешает типы в сборке, выполняя поиск по глобальному кэшу сборок, каталогу bin и по любым проверочным путям.Это осуществляется с помощью средства загрузки Fusion.Но откуда средству загрузки Fusion известно о том, что следует искать?Это зависит от разрешения, выполненного во время разработки при построении приложения.

Во время построения компилятор разрешает типы приложений с помощью базовых сборок.В версиях 2.0, 3,0, 3.5, 4 и 4,5 платформы .NET Framework, если устанавливаются основные сборки платформы .NET Framework имеет.

В платформе .NET Framework версии 4.5 базовые сборки предоставляются в пакете настройки для определенной версии, поставляемом вместе с соответствующей версией пакета .NET Framework SDK.В самой платформе .NET Framework доступны только сборки среды выполнения.Для построения приложений необходимо установить как платформу .NET Framework, так и соответствующий пакет .NET Framework SDK.

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

Если базовые сборки недоступны, система построения разрешает типы сборок с использованием сборок среды выполнения.Поскольку сборки среды выполнения в глобальном кэше сборок не различаются по дополнительным номерам версий, существует вероятность, что результатом разрешения станет неправильная сборка.Это может произойти, например, в случае ссылки на новый метод, введенный в платформе .NET Framework версии 3.5, при ориентировании на версию 3.0.Построение выполняется успешно, и приложение запускается на компьютере построения, однако оно вызывает сбой при развертывании на компьютере без установленной версии 3.5.

В пакете настройки для определенной версии, поставляемом с пакетом .NET Framework SDK, содержится список всех сборок среды выполнения для данной версии платформы .NET Framework, называемый распространяемым списком.Это не позволяет системе построения разрешить типы для неправильной версии сборки.

См. также

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

Дополнительные возможности MSBuild