2010-08-03 77 views
2

是否有任何解决方案将使用目标平台编译的单个应用程序部署为AnyCPU,而这些AnyCPU依赖于传统C++代码的.NET包装程序与x86和x64操作系统?你是否需要在所有情况下提供两个应用程序可执行文件,一个是使用x86平台编译的目标平台,另一个是使用x64作为引用x86包装器和x64封装器的可执行文件?两个包装(x86和x64)可以与同一个AnyCPU应用程序一起使用吗?

谢谢!

回答

1

我使用一个启动器应用程序来测试操作系统并在DLL中移动,以便在运行时使用正确的DLL(在32位操作系统上使用x86 dll等)。启动器中的逻辑非常简单。喜欢的东西:

If IntPtr.Size = 8 Then 
    '-- Copy x64 DLLs into position 
Else 
    '-- Copy x86 DLLs into position 
End If 

当然,在复制时,你需要复制,让您可以x64和x86之间随时切换(在便携式应用的情况下)。但是,如果您正在安装不可移植的应用程序,则不需要启动程序,因为此操作系统检查可以在安装程序中完成(因此只安装正确的DLL)。 Visual Studio安装项目不允许这样做(因为您不能在一个安装程序中混合使用x64和x86组件),但InstallShield确实允许(这是我使用的)。

您将需要编辑您的项目文件以使用非特定版本的DLL(否则这种四处移动和有条件的安装逻辑将无法达到您想要的效果)。

相关问题