【问题标题】:Identifying target machine (32 bit or 64 bit) with ClickOnce deployment使用 ClickOnce 部署识别目标机器(32 位或 64 位)
【发布时间】:2011-05-18 10:45:07
【问题描述】:

我有一个Windows Forms 应用程序,并且正在通过 ClickOnce 部署部署该应用程序。现在,我有一个第三方 DLL 文件,它有 32 位和 64 位操作系统的不同版本。

是否可以通过ClickOnce根据目标机器(32位或64位)部署不同的DLL文件?

【问题讨论】:

  • 两个不同的dll版本文件名一样吗?
  • @whatknott:是的,两个 dll 都具有相同的名称,甚至是版本号。唯一的区别是大小。

标签: .net winforms deployment clickonce 32bit-64bit


【解决方案1】:

[编辑]

没有必要使用反射。您可以直接在加载程序中添加对程序的引用并将其启动。在Tech and Me 写了一篇带有代码的博文。


您可以在部署中包含这两个版本,但名称不同。然后让加载器应用程序检查您是在 32 位还是 64 位系统上,复制您的真实程序链接到的正确 dll(例如,thirdparty64.dll ->thirdparty.dll),然后从加载器调用您的程序,例如Assembly.Load 并使用反射来启动您的主要方法。

一种更简单的方法是将您的应用程序编译为以 x86 方式运行,确保它始终以 32 位模式运行。如果您不依赖某些特定应用程序以 32/64 位版本安装在机器上,这可能是最佳选择。

【讨论】:

  • 感谢您的回答。 Clickonce 有可能吗?这个加载器应用程序是在 clickonce 部署应用程序时运行,还是应该在我的应用程序第一次运行时运行?在 clickonce 部署期间,我不确定我们如何复制此 dll,因为我不确定它是否为我们提供了安装位置。如果我错了,请纠正我。
  • 您必须在应用程序第一次运行时执行此操作,而不是在部署时执行此操作。我自己也试试。
  • 为此做了一个小测试项目和博客文章。编辑了我的答案以反映它。
猜你喜欢
  • 2014-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-05
  • 1970-01-01
  • 2019-03-28
  • 2011-02-18
  • 1970-01-01
相关资源
最近更新 更多