VS build - 32位vs 64

时间:2010-06-17 15:01:13

标签: asp.net build 64-bit compatibility 32-bit

ASP.NET 4.0:

我的笔记本电脑正在使用VS 2010和IIS7运行64位Win7 Ultimate。

我的开发,分段和生产服务器都是带有IIS6的32位2003服务器(显然)。

问题:

  1. 我知道真的不受支持,但有什么方法可以让我的笔记本电脑在Win7下运行IIS6?保持配置在我的本地环境和部署管道之间保持一致很好,但我拒绝回到XP。

  2. 如果我在Win7上的VS2010下编译并在目标配置中设置了“Any CPU”标志,那么生成的程序集是否与目标无关?也就是说,它们是64位还是32位特定的,还是它们真的可以用于任何一个? (由于各种不相关的原因,我通常的“试一试”的方法目前无效。)

  3. 在我的笔记本电脑上,我有Framework和Framework64文件夹。如果程序集与目标无关,那么它们与VS从我的代码生成的程序集之间的区别是什么?如果他们不是目标无关的,为什么我有两个单独的文件夹?这两个版本之间是否存在性能差异?

  4. 提前致谢。

1 个答案:

答案 0 :(得分:1)

  1. 我知道,运行不同版本的IIS而不是基于操作系统的版本。由于IIS与您拥有的任何操作系统(在XP和Server 2003中为6.0,在Vista和Server 2008中为7.0,在Win7和Server 2008 R2中为7.5)的安装相关联,因此您无法安装其他版本 - 您将需要XP或2003位置来测试是否要使用IIS6。

  2. 他们与目标无关。 VS实际上并不编译机器代码 - 它编译为IL(一种“中间语言”),目标机器上的.NET框架(x64或x86,取决于安装的操作系统版本)编译成机器代码本地工作。因此,编译“AnyCPU”将允许您运行任何一个。如果您愿意,可以在编译时定位x86,它们将在您的x86服务器上本机运行并在x64机器上使用WoW,因此您实际上将在两者上运行完全相同的代码。

  3. 这意味着您已安装了两个版本的框架 - x64和x86。程序集与目标无关,但框架的相关版本将.NET IL程序集转换为在PC上本机执行的机器代码。要做到这一点,需要有一个x86框架来编译为x86机器代码(如果你有一个x86处理器),x64也是如此。