13

我想澄清一个概念。在 C# 中,当我们构建(或重新构建)一个解决方案时,我们有时会得到 Build: 1 succeeded

而有时,

Build: 1 succeeded or up-to-date

好的,我知道当我们得到后者的答案时,我们的代码中的某些内容将不符合逻辑。

但是,这是什么意思CONCEPTUALLY

4

3 回答 3

9

Build: 1 succeeded通常是指成功编译带有1项目的解决方案。

尽管

Build: 1 succeeded or up-to-date意味着您的解决方案中项目中的代码没有更改,因此不需要编译。因此,1 Build Success or up-to-date

于 2013-02-21T13:06:37.640 回答
4

这意味着项目中没有任何变化。VS(真的是MSBUILD),决定它是否是最新的,如下所示:

来自:MSBuild 如何决定是否需要重建 C# 库?

如果您查看 Microsoft.CSharp.targets(用于编译 C# 项目的 msbuild 文件),CoreCompile 目标定义了一组输入和输出。这些用于执行依赖关系检查以查看 CoreCompile 是否需要运行。输入列表包括 c# 文件、资源文件、应用程序图标、强名称密钥文件以及您可以定义的其他自定义输入。

如果您有解决方案并在启用诊断日志记录的情况下运行 msbuild(/v:diag 命令行参数),如果输出是最新的,您可能会看到此消息:

跳过目标“CoreCompile”,因为所有输出文件相对于输入文件都是最新的。

目标文件位于 .NET Framework 目录中(c:\windows\Microsoft.NET\Framework\v3.5 或 v4.0.30319。

于 2013-02-21T13:14:15.463 回答
0

An "up-to-date" project was previously built successfully, and hasn't changed since that time, so it isn't rebuilt.

于 2017-06-15T19:05:52.990 回答