【问题标题】:Ignore “targeting 'xxx' is not compatible with the project's target” warning忽略“targeting 'xxx' is not compatible with the project's target”警告
【发布时间】:2014-05-07 18:32:02
【问题描述】:

这个问题在here 之前问过,但这个问题从未得到回答。 如何在我的 MS 安装程序部署项目中抑制警告/错误?

谢谢

【问题讨论】:

  • 更具体地说明您要实现的目标、设置等。您是否尝试过其他问题的答案?仅仅因为它没有被接受为正确答案并不意味着它不正确或对您不起作用
  • "我已经为我的项目创建了一个安装程序,并且我包含了一个特殊的 .dll 文件,该文件需要复制到目标机器上。编译器显示以下警告:文件'[文件名]'目标'未知'与项目的目标平台'x86'不兼容我不关心那个dll的目标平台,因为我需要该文件用于其他目的。另外,我需要保持这个文件“不变”,所以我不能改变它目标平台。所以我需要一种方法来忽略这个警告。”

标签: windows-installer setup-deployment mismatch vdproj target-platform


【解决方案1】:

它提醒您做错事了,因为 32 位 MSI 不能包含 64 位组件:

http://msdn.microsoft.com/en-us/library/aa367451(v=vs.85).aspx

不同的架构需要不同的设置:

http://blogs.msdn.com/b/heaths/archive/2008/01/15/different-packages-are-required-for-different-processor-architectures.aspx

因此,如果目标机器是 x64(为什么还需要 64 位 Dll?),那么您可以通过将其构建为 x64 MSI 文件来消除警告,因为 64 位 MSI 可以同时包含 32位和 64 位文件。我刚试过这个,它确实摆脱了警告。我知道没有其他方法可以抑制该警告。

【讨论】:

  • 我知道我的程序是针对 x86 的,如果我们不必为 x86 和 x64 操作系统创建两个单独的 msi 文件,那就太好了。我遇到了您提到的这些 msdn 文章,我相信必须有一种方法可以指示安装程序禁用对这些文件的目标平台检查(带有 exe 和 dll 的 ext)。微软的家伙可以在这里提供解决方法吗?或者他们甚至不检查这个网站?
  • 我提供的博客链接是一位 MS 人,他说您需要为不同的架构使用不同的 MSI,而当前的 VS 设置项目在 VS 2010 之后已经消失,在 VS 2013 中被不同的东西取代。
  • 您可以构建一个包含两个 MSI 的单个 EXE 引导程序,并根据平台架构启动它们。 Advanced Installer 在其混合包 (advancedinstaller.com/user-guide/mixed-32-64-wizard.html) 中有对此的预定义支持。
【解决方案2】:

亲爱的stackoverflow朋友们, 如果您遵循 msdn 或其博客或其他安装程序供应商中给出的建议,他们会驱使您转圈。

如果您阅读了我原来的问题,这真的很简单——这是否是一种常见的做法是一个单独的问题。但我和其他人确实需要针对这种部署场景的解决方案。

所以我发现安装程序限制(禁止 x86 目标平台中的 x64 程序集)最简单的解决方法是压缩到文件并将其包含到项目中,安装程序无法检测到它是针对 x64 的。下一步是创建自定义操作以在 AfterInstall 事件中解压缩并在 AfterUninstall 事件中删除解压缩文件。自定义动作 dll 真的很容易创建!!

我希望这对尝试完成类似部署方案的其他人有所帮助。

【讨论】:

    猜你喜欢
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-08
    • 1970-01-01
    • 1970-01-01
    • 2020-05-28
    • 2019-09-05
    相关资源
    最近更新 更多