程序集引用之间的差异

use*_*783 9 .net c# visual-studio-2010 visual-studio-2012

在一些机器上,在csproj中添加对程序集的引用后生成下一个标记.

<Reference Include="Microsoft.Expression.Interactions">
  <HintPath>..\Libs.SL\Blend\Microsoft.Expression.Interactions.dll</HintPath>
</Reference>
Run Code Online (Sandbox Code Playgroud)

但是在一些机器上生成了带有版本,文化,令牌和处理器架构的参考:

 <Reference Include="Microsoft.Expression.Interactions, Version=5.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\Libs.SL\Blend\Microsoft.Expression.Interactions.dll</HintPath>
</Reference>
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

Car*_*ras 1

摘自msdn:

处理器体系结构已添加到 .NET Framework 2.0 版中的程序集标识中,以允许特定于处理器的程序集版本。您可以创建其标识仅因处理器体系结构而异的程序集版本,例如特定于处理器的 32 位和 64 位版本。强名称不需要处理器架构。有关详细信息,请参阅AssemblyNameProcessorArchitecture。在此示例中,完全限定名称指示 myTypes 程序集具有带公钥令牌的强名称、具有美国英语的区域性值以及版本号 1.0.1234.0。它的处理器架构是“msil”,这意味着它将根据操作系统和处理器被即时(JIT)编译为32位代码或64位代码。

请求程序集中类型的代码必须使用完全限定的程序集名称。这称为完全限定绑定。在 .NET Framework 中引用程序集时,不允许使用部分绑定(仅指定程序集名称)。

对组成 .NET Framework 的程序集的所有程序集引用也必须包含程序集的完全限定名称。例如,要引用版本 1.0 的 System.Data .NET Framework 程序集,将包括:

查看更多来源:

http://msdn.microsoft.com/en-us/library/k8xx4k69.aspx