繁体   English   中英

程序集引用之间的差异

[英]Differences between assembly references

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

<Reference Include="Microsoft.Expression.Interactions">
  <HintPath>..\Libs.SL\Blend\Microsoft.Expression.Interactions.dll</HintPath>
</Reference>

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

 <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>

为什么是这样?

从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

这些行无法帮助您的应用程序找到正确的引用或创建完全限定的程序集名称,这些行有助于Visual Studio查找引用。 可能只有在VS确定要加载哪个dll时才会找到这些行。

我知道,这不是您期望的答案:)但我希望它可以帮助您在严格的方向进行搜索。

我不是100%肯定,但根据.NET Assemblies通常行为模型,在第二种情况下,您将获得引用程序集的详细描述(完全限定名称),因为计算机上有多个版本的程序集。

这样编译器知道它确切地装配在您的项目中引用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM