【问题标题】:Why does Visual Studio 2008 always build a setup project even when it is up to date?为什么 Visual Studio 2008 始终构建安装项目,即使它是最新的?
【发布时间】:2012-01-25 10:31:15
【问题描述】:

对于普通的源代码项目,当您要求 Visual Studio 构建项目时,它只会在被认为已过期的情况下构建它。 (/build 命令行开关的文档证实了这一点。)

但是,对于安装项目,Visual Studio 似乎总是构建它们,无论依赖项是否是最新的。即使在安装项目仅包含另一个项目的主要输出的简单场景中也会发生这种情况。

为什么设置项目会这样?有没有办法改变这种行为?

【问题讨论】:

  • 不使用安装项目的另一个原因。 FWIW,微软已经杀死了他们,他们不会出现在 VS2012 中。 InstallShield Limited Edition 是建议的替代品,除非您需要更多。 WiX 是另一种选择。
  • @ChristopherPainter,这很好地提醒了 VS 设置项目的保质期。您知道 InstallShield LE 项目的行为是否有所不同吗?
  • 老实说,我不知道。无论如何,我通常将安装程序保存在单独的解决方案中。如果它在解决方案中,通常有理由认为,由于安装程序将所有内容打包,如果发生更改,则可能需要构建安装程序。大多数开发人员不想处理这个问题,因此我将其放入单独的 SLN 中。
  • 我确实为 VS 2010 下载了 InstallShield LE,当一切都是最新的时,它实际上确实跳过了构建设置。

标签: visual-studio setup-project


【解决方案1】:

安装项目实际上是一个打包实用程序,它会检查所有项目并在必要时构建它们,但每次运行它都会创建一个新包。没有办法改变我可以看到的这种行为。

我通常将构建 - 配置管理器设置为不构建安装项目。然后,当我想要创建/更新设置时,我会在它们上运行构建。

【讨论】:

  • 感谢您的确认。在我们的特定情况下,我们有一个 NAnt 脚本,用于构建 setup 项目的日常构建。我们还在我们的开发机器上使用 NAnt 脚本来运行完整的系统构建,如果您需要在签入之前在您的机器上多次运行它,最好让它们完全“增量”。我将我们的 NAnt 脚本更改为查看 .MSI 与其中包含的主要可执行文件相比是否是最新的。这样我们就可以避免在多次运行脚本时重新构建 .MSI。
  • 我认为您可以针对这些情况进行排除安装程序的解决方案配置。例如,在发行版中构建安装程序,而不是在调试中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-28
  • 2010-10-14
  • 1970-01-01
  • 2010-11-03
  • 1970-01-01
  • 2010-11-04
相关资源
最近更新 更多