如何配置VS以仅编译已更改的代码

rod*_*wer 9 c# compilation visual-studio

我有一个非常大的解决方案,每次我调试时都会进行编译.
所以我知道我可以在解决方案配置中禁用所有项目的构建,但有没有办法说Visual Studion只编译更改的代码?
我确定是的.

谢谢你提前.

Oli*_*ver 9

正如Marnix和Anton已经说过这就是VS通常做的事情.但是,如果您的解决方案中有很多项目彼此依赖,并且您对所有或大多数其他项目将使用的组件进行更改,则必须再次构建其他项目,以确保一切按预期工作.

更新

因此,即使您没有进行任何更改,它也会开始重新编译,我们需要了解VS如何尝试找出它在增量构建中需要做什么.

为此,它只检查每个文件的日期时间以及是否有任何更改.如果是,重新编译该文件及其所有依赖项(例如stdafx.h中的更改将导致完全重建,因此通常每个源文件都将引用此文件).

但是这种行为也有例外.例如,即使没有进行任何更改,安装项目也将始终重建(由于这一事实,我通常会从构建过程中排除安装项目,并且仅在需要时手动启动它).

因此,如果您只拥有通常支持增量构建的C/C++,C#,VB等项目,那么即使您不进行任何更改,也必须在两个构建之间进行更改.

以下是一些可能性:

  • 用于更改源文件的pre或post构建命令
    • 这可能是一个自动更新,将您的repo中的修订号添加到AssemblyInfo文件的资源中.
    • 或者在目录结构中进行一些更改的复制/删除命令(我使用这一次来删除预构建命令中的输出目录以强制在每次构建时进行重建).
  • 装配版本的自动增量器
    • 也许通过使用[assembly: AssemblyVersion("1.0.*")]或一些其他外部过程来增加构建数量

如果上述步骤之一发生在所有或大多数其他项目所依赖的模块上,则需要重建所有项目.