部分限定的程序集引用和并行 (Side-by-Side) 执行
由于部分限定的程序集引用可能引起并行问题,因此这些引用仅能用来绑定到应用程序目录内的程序集。 在您的代码中,应避免使用部分限定的程序集引用。
若要减轻代码中部分限定的程序集引用所带来的不良影响,可以利用应用程序配置文件中的 <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") becomes Assembly.Load("myAssembly, version=1.0.0.0, publicKeyToken=..., culture=neutral")。
注意 |
---|
公共语言运行时限制禁止从全局程序集缓存加载部分引用的程序集,可以使用 LoadWithPartialName 方法跳过该限制。由于该方法容易在并行执行中引起问题,因此只可用于远程方案中。 |