我想澄清一个概念。在 C# 中,当我们构建(或重新构建)一个解决方案时,我们有时会得到
Build: 1 succeeded
而有时,
Build: 1 succeeded or up-to-date
好的,我知道当我们得到后者的答案时,我们的代码中的某些内容将不符合逻辑。
但是,这是什么意思CONCEPTUALLY
?
我想澄清一个概念。在 C# 中,当我们构建(或重新构建)一个解决方案时,我们有时会得到
Build: 1 succeeded
而有时,
Build: 1 succeeded or up-to-date
好的,我知道当我们得到后者的答案时,我们的代码中的某些内容将不符合逻辑。
但是,这是什么意思CONCEPTUALLY
?
Build: 1 succeeded
通常是指成功编译带有1
项目的解决方案。
尽管
Build: 1 succeeded or up-to-date
意味着您的解决方案中项目中的代码没有更改,因此不需要编译。因此,1 Build Success or up-to-date
这意味着项目中没有任何变化。VS(真的是MSBUILD),决定它是否是最新的,如下所示:
如果您查看 Microsoft.CSharp.targets(用于编译 C# 项目的 msbuild 文件),CoreCompile 目标定义了一组输入和输出。这些用于执行依赖关系检查以查看 CoreCompile 是否需要运行。输入列表包括 c# 文件、资源文件、应用程序图标、强名称密钥文件以及您可以定义的其他自定义输入。
如果您有解决方案并在启用诊断日志记录的情况下运行 msbuild(/v:diag 命令行参数),如果输出是最新的,您可能会看到此消息:
跳过目标“CoreCompile”,因为所有输出文件相对于输入文件都是最新的。
目标文件位于 .NET Framework 目录中(c:\windows\Microsoft.NET\Framework\v3.5 或 v4.0.30319。
An "up-to-date" project was previously built successfully, and hasn't changed since that time, so it isn't rebuilt.