.NET“任何CPU”项目是否应该绑定到Framework或Framework64 DLL?

时间:2008-11-26 02:28:53

标签: .net tfs msbuild 64-bit 32-bit

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

我应该绑定到Framework版本,还是这会限制我在64位计算机上运行时? .NET是否会在可能的情况下将绑定重定向为使用64位?

1 个答案:

答案 0 :(得分:1)

我认为你的意思是你的问题任何CPU ,对吗?假设情况就是如此,在几乎所有情况下,不考虑位数的绑定是一种方法。

回想一下.NET代码是JITed(Just In Time编译) - 意味着无论什么架构,C#或VB.NET编译器中的32位和64位代码都是相同的你计划继续前进。当代码在运行时被JIT时,那就是当它变为32或64位时。

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