Разрешение сборок во время разработки
При добавлении ссылки на сборку через вкладку ".NET " диалогового окна " добавление ссылки, контрольных точек на промежуточную базовую сборку, которая содержит все данные о типах и сигнатуры, но не всегда содержит код. На вкладке ".NET" приведен список базовых сборок, соответствующих сборкам среды выполнения в платформе .NET Framework. Кроме того, на ней приведен список базовых сборок, которые соответствуют сборкам среды выполнения в зарегистрированных папках AssemblyFoldersEx, используемых сторонними разработчиками.
Настройка для различных версий
Visual Studio 2013 позволяет версии целевого объекта .NET Framework, которые выполняются или в версии 2.0 среды CLR или (CLR) версии 4. Это включает версии 2.0, 3.0, 3.5, 4, 4.5 и 4.5.1 и версии 1.0, Silverlight 2.0 и 3.0 платформы .NET Framework. При выпуске новой версии платформы .NET Framework, основанной на среде CLR версии 2.0 или версии 4, .NET Framework можно установить с использованием пакета настройки для определенной версии и эта платформа будет использоваться в качестве целевой в Visual Studio.
Принцип работы разрешения типов
Во время выполнения среда CLR разрешает типы в сборке, выполняя поиск по глобальному кэшу сборок, каталогу bin и по любым проверочным путям. Это осуществляется с помощью средства загрузки Fusion. Но откуда средству загрузки Fusion известно о том, что следует искать? Это зависит от разрешения, выполненного во время разработки при построении приложения.
Во время построения компилятор разрешает типы приложений с помощью базовых сборок. В версиях 2.0, 3.0, 3.5, 4, 4.5 и 4.5.1 платформы .NET Framework, если устанавливаются основные сборки платформы .NET Framework имеет.
Базовые сборки предоставляются в пакете настройки для определенной версии, поставляемом вместе с соответствующей версией платформы .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, называемый распространяемым списком. Это не позволяет системе построения разрешить типы для неправильной версии сборки.