设置针对x86和x64?

我有一个程序需要x64和x86 dll(它在运行时确定它需要哪些),但在尝试创建一个设置时,它会抱怨:

文件AlphaVSS.WinXP.x64.dll’目标’AMD64’与项目的目标平台’x86’不兼容
文件AlphaVSS.Win2003.x64.dll’目标’AMD64’与项目的目标平台’x86’不兼容
文件AlphaVSS.Win2008.x64.dll’目标’AMD64’与项目的目标平台’x86’不兼容

如何让我的设置目标同我的程序一样?

安装项目(在Visual Studio中)创建的MSI一次只能定位一个平台。 您可以选择制作2个MSI,将它们合并在一起并制作一个自定义安装启动板,在两者之间进行选择。 有一些第三方产品,例如Advanced Installer ,可以为您执行此操作。

我也遇到了这个问题, 写了一篇关于我的解决方案的博客文章 :

  • 使用deflate.exe缩小文件,使用不同的扩展名命名(例如.x64)
  • 将其作为内容文件添加到主项目中
  • 向您的解决方案添加自定义操作项目
  • 将自定义操作添加到安装项目“安装”自定义操作
  • 使用自定义操作Install方法内的文件
  • System.IO.Compression.DeflateStream(参见上面的代码)
  • 在你的桌子周围,在大厅里做一点跳舞,过去尽可能多的同事,你要烦恼:)

deflate.exe文件可以从谷歌代码的存储库下载。

.Net有一个“任何CPU”选项。 很容易将它看作更多的“通用”选项,它只会使用较小的x86function,但实际上它让每台机器上的JIT编译器为该机器选择合适的cpu类型。

唯一不应该使用它的方法是,如果您知道自己的依赖关系或要求对一个架构或另一个架构不利。 例如:你知道你需要很多内存,你需要依赖32位本机dll,或者你想要预编译应用程序。

这里存在危险,因为您具有特定于平台的dll依赖性。 但你有两种类型的dll,听起来你知道如何在运行时选择正确的。 那么’Any CPU’选项对你有用吗?

  1. 打开部署项目。
  2. 在Solution Explorer中,选择部署项目。
  3. 在“属性”窗口中,选择TargetPlatform属性。
  4. 选择适用于Intel Itanium 64位平台的Itanium或适用于任何其他64位平台(例如AMD64和EM64T指令集)的x64。
  5. 在安装时,如果目标计算机与指定平台不兼容,将引发错误并停止安装。