Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Имя сборки хранится в метаданных и оказывает значительное влияние на область сборки и ее использование приложением. Сборка с строгим именем имеет полностью квалифицированное имя, которое включает имя сборки, культуру, открытый ключ, номер версии и, при необходимости, архитектуру процессора. Используйте свойство FullName для получения полностью квалифицированного имени, часто называемого отображаемым именем, для загруженных сборок.
Среда выполнения использует сведения об имени, чтобы найти сборку и отличить ее от других сборок с тем же именем. Например, строго именованная сборка с именем myTypes
может иметь следующее полное имя:
myTypes, Version=1.0.1234.0, Culture=en-US, PublicKeyToken=b77a5c561934e089c, ProcessorArchitecture=msil
В этом примере полное имя указывает, что сборка myTypes
имеет защищённое имя с токеном открытого ключа, значение культуры для английского языка США и номер версии 1.0.1234.0. Его архитектура процессора — это msil
, что означает, что компиляция будет выполняться по технологии JIT в 32-разрядный или 64-разрядный код в зависимости от операционной системы и процессора.
Подсказка
Эта ProcessorArchitecture
информация позволяет использовать версии сборок для конкретных процессоров. Вы можете создавать версии сборки, идентичность которых отличается только архитектурой процессора, например версии, специфичные для 32-битных и 64-битных процессоров. Архитектура процессора не обязательна для строгих имен. Дополнительные сведения см. в разделе AssemblyName.ProcessorArchitecture.
Код, который запрашивает типы из сборки, должен использовать полностью квалифицированное имя сборки. Это называется полной привязкой. Частичная привязка, указывающая только имя сборки, запрещена при ссылке на сборки в .NET Framework.
Все ссылки на сборки, составляющие .NET Framework, также должны содержать полное имя сборки. Например, ссылка на сборку System.Data .NET Framework для версии 1.0 будет включать:
System.data, version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Версия соответствует номеру версии всех сборок .NET Framework, поставляемых с .NET Framework версии 1.0. Для сборок .NET Framework культурное значение всегда нейтральное, а открытый ключ совпадает с вышеприведенным примером.
Например, чтобы добавить ссылку на сборку в файл конфигурации для настройки прослушивателя трассировки, необходимо включить полное имя системной сборки .NET Framework.
<add name="myListener" type="System.Diagnostics.TextWriterTraceListener, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="c:\myListener.log" />
Замечание
Среда выполнения обрабатывает имена сборок без учета регистра при привязке к сборке, но сохраняет любой регистр, использованный в имени сборки. Некоторые инструменты в пакете SDK для Windows обрабатывают имена сборок с учетом регистра букв. Для получения наилучших результатов управляйте именами сборок, как будто они были чувствительны к регистру.
Имя компонентов приложения
Среда выполнения не учитывает имя файла при определении идентификатора сборки. Идентификационные данные сборки, состоящие из имени сборки, версии, культуры и строгого имени, должны быть ясны в среде выполнения.
Например, если у вас есть сборка с именемmyAssembly.exe , которая ссылается на сборку с именем myAssembly.dll, привязка выполняется правильно при выполнении myAssembly.exe. Однако, если другое приложение выполняет myAssembly.exe с помощью метода AppDomain.ExecuteAssembly, среда выполнения определяет, что myAssembly
уже загружено, когда myAssembly.exe запрашивает привязку к myAssembly
. В этом случае myAssembly.dll никогда не загружается. Так как myAssembly.exe не содержит запрошенный тип, возникает ошибка TypeLoadException .
Чтобы избежать этой проблемы, убедитесь, что сборки, составляющие приложение, не имеют одного имени сборки или размещения сборок с одинаковым именем в разных каталогах.
Замечание
В .NET Framework, если вы помещаете сборку строго именованного имени в глобальный кэш сборок, имя файла сборки должно соответствовать имени сборки, не включая расширение имени файла, например .exe или .dll. Например, если имя файла сборки myAssembly.dll, имя сборки должно быть myAssembly
. Частные сборки, развернутые только в корневом каталоге приложений, могут иметь имя сборки, отличное от имени файла.