Частичные ссылки на сборки и параллельное выполнение
Поскольку частичные ссылки на сборку потенциально являются одним из источников проблем при параллельном выполнении, их следует применять только для привязки к сборкам в пределах каталога приложения. По возможности не следует использовать частичные ссылки на сборки в коде.
Чтобы снизить возможную опасность от частичных ссылок на сборки, при их применении в коде, можно использовать элемент <qualifyAssembly> в файле конфигурации приложения, который полностью уточняет имеющиеся в коде частичные ссылки на сборки. При использовании элемента <qualifyAssembly> следует указывать только те поля, которые не указаны в частичной ссылке. Удостоверение сборки, содержащееся в атрибуте fullName, должно содержать все сведения, необходимые для полного уточнения имени сборки: имя, открытый ключ, язык и региональные параметры и версию.
Следующий пример демонстрирует запись в файле конфигурации приложения, которая полностью уточняет имя сборки с именем myAssembly.
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<qualifyAssembly partialName="myAssembly"
fullName="myAssembly,
version=1.0.0.0,
publicKeyToken=...,
culture=neutral"/>
</assemblyBinding>
Если оператор загрузки сборки ссылается на myAssembly, указанные выше параметры файла конфигурации заставляют среду выполнения автоматически преобразовывать частичную ссылку на myAssembly в полную ссылку. Например, "Assembly.Load("myAssembly")" превращается в "Assembly.Load("myAssembly, version=1.0.0.0, publicKeyToken=..., culture=neutral")".
Примечание |
---|
Для обхода ограничения среды CLR, запрещающего загружать сборки с частичными ссылками из глобального кэша сборок, можно использовать метод LoadWithPartialName.Этот метод следует использовать только в сценариях удаленного взаимодействия, так как он может привести к проблемам при параллельном выполнении. |