当我在 Visual Studio 解决方案中有一个 SQL Server 数据库项目 ( .sqlproj
) 时,我注意到每次构建解决方案时都会构建该特定项目,即使项目文件没有更改。
这与仅在有任何文件更改时才构建的普通C#
项目 ( )不一致。.csproj
我已经尝试提高msbuild
输出的详细程度,而且似乎总是在没有特殊原因的情况下构建该项目。
为什么.sqlproj
总是建造有原因吗?有没有办法让它只在文件更改时构建?
当我在 Visual Studio 解决方案中有一个 SQL Server 数据库项目 ( .sqlproj
) 时,我注意到每次构建解决方案时都会构建该特定项目,即使项目文件没有更改。
这与仅在有任何文件更改时才构建的普通C#
项目 ( )不一致。.csproj
我已经尝试提高msbuild
输出的详细程度,而且似乎总是在没有特殊原因的情况下构建该项目。
为什么.sqlproj
总是建造有原因吗?有没有办法让它只在文件更改时构建?
MSBuild 有机会制作Incremental Build。其主要思想如下:
MSBuild 尝试在这些属性的值之间找到一对一的映射。如果存在 1 对 1 映射,MSBuild 会将每个输入项的时间戳与其对应的输出项的时间戳进行比较。将没有一对一映射的输出文件与所有输入文件进行比较。如果一个项目的输出文件与其输入文件的年龄相同或更新,则该项目被认为是最新的。
我不知道 *.sqlproj 文件中有哪些目标,因此您需要确定它是否曾经使用过该技术,如果确实使用过 - 您需要检查涉及哪些输入和输出,并尝试自己澄清,他们在幕后发生了什么。