我使用MSBuild版本14.0。
根据文档here,我定义了我自己的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 =&#34; AnyCPU&#34; / fileLogger /flp:logfile=Output.log;verbosity:minimal
我第一次执行命令时,一切都是按照预期从头开始构建的。
但是,在我再次运行命令而没有对我的任何.cs
文件进行任何更改的后续情况下,该项目也是每次都是从头开始构建的。
为什么MSBuild只是跳过Build
目标,即使Inputs
参数中包含的任何文件都没有更改为Target
?
答案 0 :(得分:0)
它无效,因为我忘记从.csproj
文件中删除以下行:
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
因此Build
生成的Microsoft.CSharp.targets
任务覆盖了我定义的Build
任务。
删除该行后,我的自定义Build
任务按预期运行。