我使用 MSBuild 14.0 版。
按照此处的文档,我定义了自己的Build
任务,如下所示:
<Target Name="Build"
Inputs="@(Compile)"
Outputs="MyLibrary.dll">
<Csc
Sources="@(Compile)"
OutputAssembly="MyLibrary.dll"/>
</Target>
这个想法是通过仅增量构建来减少构建时间 - 构建任务应该仅在@(Compile)
列表中的任何文件(当前是.cs
项目中所有文件的集合)在创建最新文件后被编辑时运行的版本MyLibrary.dll
。
使用 MSBuild,我运行了以下命令:
msbuild MyProject.csproj /t:Build /p:Platform="AnyCPU" /fileLogger /flp:logfile=Output.log;verbosity:minimal
我第一次执行命令时,一切都是从头开始构建的,正如预期的那样。
但是,在随后的情况下,当我再次运行命令而没有对我的任何文件进行任何更改时.cs
,项目也是每次都从头开始构建的。
为什么 MSBuild 不只是跳过Build
目标,即使Inputs
参数中包含的任何文件都没有更改 to Target
?