2010-04-09 56 views
0

我有一个依赖本机DLL的.NET应用程序。我有.NET应用程序设置为AnyCPU。 在生成后步骤中,我计划从某个目录(x86或AMD64)复制正确的本机DLL,并将其放置在目标路径中。使用本地DLL(构建管理)的.NET应用程序

但是,这不起作用。在64位机器上,Visual Studio中的环境变量PROCESSOR_ARCHITECTURE为“x86”。

我现在的选择是创建一个输出处理器体系结构的小工具。这将在后期构建步骤中使用。

有没有更好的选择? (注意:部署/打包应用程序时,正确的本地DLL被复制到正确的平台,但这意味着我们有两个单独的x86和AMD64版本文件夹,这是可以的,因为这是用于设备驱动程序。该应用程序是驱动程序的实用工具)。

回答

2

Visual Studio是32位应用程序,因此运行在64位系统上的WoW64层中。我认为这就是为什么PROCESSOR_ARCHITECTURE在那里产生“x86”的原因 - 兼容性:应用程序应该真的认为它是一个32位系统。

您可以检查PROCESSOR_ARCHITEW6432变量的存在和值,即使实际应用程序在WoW64下执行,它也会是AMD64。请注意,该变量在32位Windows上不存在,也未在64位Windows上为64位进程定义。

相关问题