如果.NET“任何CPU”项目结合到框架或Framework64的DLL?(Should .NET

2019-09-29 17:09发布

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

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

Answer 1:

我想你的意思是你的问题的任何CPU,是否正确? 假如是这样的话,对于不考虑位数结合是走在几乎所有情况下的道路。

回想一下, .NET代码是JIT编译 (及时编译) -这意味着32位和64位代码了C#或VB.NET编译器是相同的,无论您打算什么架构上运行。 当代码在运行时JIT编译,即当它成为32位或64位的。

在某些情况下,你必须介意目标架构。 一种具体的情况下,将是对任何引用/依赖COM -wrapper的DLL,.NET框架提供或以其他方式。 这是这些DLL文件将(在COM的情况下),因为只有位32被标记(如COM是32位架构只),如果他们没有被标记为32位,互操作,以COM将不起作用。 因此,由于它们被明确标示,项目产出应为好。



文章来源: Should .NET 'Any CPU' projects bind to Framework or Framework64 DLLs?