使用本机DLL的.NET应用程序(构建管理)

时间:2010-04-09 02:45:19

标签: .net visual-studio build cross-platform

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

然而,这不起作用。在64位计算机上,Visual Studio中的环境变量PROCESSOR_ARCHITECTURE为“x86”。

我现在的另一种选择是创建一个输出处理器架构的小工具。这将由构建后步骤使用。

有更好的选择吗?

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

1 个答案:

答案 0 :(得分:2)

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

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