我有一个需要 x64 和 x86 dll 的程序(它会在运行时确定需要哪些),但是在尝试创建设置时,它会抱怨:
以“AMD64”为目标的文件 AlphaVSS.WinXP.x64.dll 与项目的目标平台“x86”
不兼容 以“AMD64”为目标的文件 AlphaVSS.Win2003.x64.dll 与项目的目标平台“x86”
文件不兼容.Win2008.x64.dll 以“AMD64”为目标与项目的目标平台“x86”不兼容
如何使我的设置像我的程序一样针对两个平台?
我有一个需要 x64 和 x86 dll 的程序(它会在运行时确定需要哪些),但是在尝试创建设置时,它会抱怨:
以“AMD64”为目标的文件 AlphaVSS.WinXP.x64.dll 与项目的目标平台“x86”
不兼容 以“AMD64”为目标的文件 AlphaVSS.Win2003.x64.dll 与项目的目标平台“x86”
文件不兼容.Win2008.x64.dll 以“AMD64”为目标与项目的目标平台“x86”不兼容
如何使我的设置像我的程序一样针对两个平台?
安装项目(在 Visual Studio 中)创建的 MSI 一次只能针对一个平台。您的选择是制作 2 个 MSI,将它们合并在一起,然后制作一个自定义设置引导程序,在两者之间进行选择。有一些 3rd 方产品,例如Advanced Installer,可以为您执行此操作。
.Net 有一个“任何 CPU”选项。很容易将其视为更多的“通用”选项,仅使用较少的 x86 功能,但实际上它允许每台机器上的 JIT 编译器为该机器选择合适的 cpu 类型。
唯一不应该使用它的情况是,如果您知道自己有不适合一种架构或另一种架构的依赖项或要求。例如:你知道你需要很多内存,你依赖于 32 位原生 dll,或者你想预编译应用程序。
这里存在危险,因为您具有特定于平台的 dll 依赖性。但是您对这两种类型都有 dll,听起来您知道如何在运行时选择正确的 dll。那么“任何 CPU”选项对您有用吗?