1

我有一个 C# Visual Studio 项目 (.csproj),它引用了 Framework64 版本的System.Data. 当我尝试在另一台机器上使用MSBuild / Team Foundation Server (TFS) 进行构建时,由于 64 位 DLL 不存在而失败。

我应该绑定到框架版本,还是在 64 位机器上运行时会限制我?.NET 是否尽可能重定向绑定以使用 64 位?

4

1 回答 1

1

我认为您的意思是您的问题中的任何 CPU,对吗?假设是这种情况,几乎在所有情况下都可以使用不考虑位数的绑定。

回想一下,.NET代码是JITed (即时编译)——这意味着无论您计划在什么架构上运行,来自C# 或VB.NET编译器的32 位和 64 位代码都是相同的。当代码在运行时 JITed 时,它变成 32 位或 64 位。

在某些情况下,您必须注意目标架构。一种特定情况是对COM包装 DLL、提供的 .NET Framework 或其他方式的任何引用/依赖项。这是因为如果这些 DLL 文件未标记为 32 位,则这些 DLL 文件将被标记为(在 COM 的情况下)仅 32 位(因为 COM 是仅 32 位架构),与 COM 的互操作将不起作用。因此,由于它们是明确标记的,因此您的项目输出也应该如此。

于 2008-11-26T02:45:13.730 回答