visual-studio-2010 - 如何阻止 Visual Studio 构建未更改的依赖项?

标题相当简单。如果我点击构建按钮,它就像“全部重建”按钮。如果我有两个项目,我们称它们为 PARENT 和 CHILD,然后我对 Parent 进行更改并单击“构建”按钮。 VS 中的默认行为是重建 PARENT 和 CHILD,而它应该只重建 PARENT。

我想知道这是否是 Visual Studio 中的一个选项以及如何更改它。

谢谢。

最佳答案

您的问题似乎有些不一致,因此为了清楚起见,我将定义我使用的术语。

  • 构建:编译和链接应用程序/项目所需的所有内容
  • 清理:删除作为构建一部分生成的所有文件。
  • 重建:执行 clean,然后执行 build

我的 Visual Studio 没有“(重新)构建全部”按钮,但它有一个“(重新)构建解决方案”按钮,所以我假设您是这个意思。我还将假设您所说的 rebuild PARENT 和 CHILD,您的意思是 build PARENT 和 CHILD,并且它不会重新编译项目。

BuildBuild Solution 选项不一样。

  • 执行 Build 将评估当前项目(及其依赖项),编译所需的任何内容。
  • 执行构建解决方案将评估解决方案中的所有项目,编译所需的任何内容。

所以,如果您有一个包含 3 个项目的解决方案:

  1. child
  2. 服务(取决于 child )
  3. 前端

那么,假设当前选中的项目是Service:

  • 构建:将评估/编译:子和服务
  • 构建解决方案:将评估/编译:子、服务和前端

现在,我相信 看到的是,当您在 Parent 上执行构建时,VS 正在对 Child 执行构建好吧,即使它没有改变。我希望它正在评估 Child,因为它需要知道它是否发生了变化。如果不执行评估,它就无法知道,这就是为什么在您的输出窗口中您会看到它对 Child 项目做了一些事情。这通常相当快,但如果您有很多依赖项,它确实会加起来。

如果您不希望 VS 在构建父级时评估您的依赖项,那么您可以遵循一些方法,但您选择远离工具保护,因此除非您小心,否则您可能会遇到二进制不匹配等等……

一些选项:

  • 卸载您未更改的子项目(右键单击解决方案资源管理器并选择卸载)。这隐藏了依赖关系,因此它不会被编译)。
  • 停止让 Visual Studio 管理您的依赖项。最安全的方法是删除 Project Based 引用,而使用 Binary Based 引用(指向每个依赖项的编译输出)。但这可能是一项艰巨的任务,因为您必须自己管理项目构建。

我建议您三思而后行,并评估节省的时间(可能有一些)是否值得冒险,因为您有时可能无法构建您需要的所有东西,所以最终花时间追逐你的尾部。

https://stackoverflow.com/questions/5888732/

相关文章:

visual-studio-2010 - 仅在发布构建期间签署具有强名称的程序集

c++ - 在构建库之前让 CMake 执行项目中的目标

c++ - CMake可以生成配置文件吗?

groovy - 如何生成源文件并用gradle编译

php - 使用 ant 脚本构建 PHP

visual-studio - Visual Studio 2008 中的构建解决方案和批量构建有什

build - 在 Sublime Text 3 中编辑构建系统

java - 如何在构建之前删除 Hudson 工作区?

c# - vshost.exe 一直在访问我的 .dll,我在构建它时无法更新它

build - Mono 3.0.0 基于 CentOS 6 构建