9

在某些机器上,在 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>

为什么是这样?

4

3 回答 3

1

这些行不能帮助您的应用程序找到正确的引用或创建完全限定的程序集名称,这些行有助于 Visual Studio 找到引用。可能只有当 VS 在识别要加载哪个 dll 时出现问题时,您才会发现这些行。

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

于 2012-12-04T15:53:29.580 回答
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

于 2012-12-04T13:22:23.390 回答
0

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

通过这种方式,编译器知道您的项目中究竟引用了哪个程序集。

于 2012-12-04T13:22:37.343 回答