如果输出目录 DLL(例如 bin\Release 相对目录中)比所有源文件新,则尝试让 MSBuild 不执行任何操作。
如果输出目录比任何源都更新(例如“make”类型的增量构建),是否有一个属性可用于停止构建/复制操作?
创建了所有二进制文件,然后多次重新运行构建。 虽然不执行“编译”动作,但仍然会发生耗时的复制操作。
如果输出目录比任何源都更新(例如“make”类型的增量构建),是否有一个属性可用于停止构建/复制操作?
MSBuild 默认支持增量构建。您不需要设置属性来进行增量构建。
如果输出文件相对于输入文件是最新的(即输出文件比输入文件新),MSBuild 将跳过目标。它不会执行这样的复制操作。
但是,如果您发现仍然发生耗时的复制操作,请检查以下建议:
1.请检查您的.csproj文件中是否添加了
Copy
任务。如果是,请将SkipUnchangedFiles
设置为true
以跳过源和目标之间未更改的文件的复制。
例如
<Target Name="CopyTarget" AfterTargets="Build">
<ItemGroup>
<FilesToCopy Include="path\to\your\files\**\*" />
</ItemGroup>
<Copy SourceFiles="@(FilesToCopy)" DestinationFolder="$(OutputPath)" SkipUnchangedFiles="true" />
</Target>
2.正如@Jonathan所说,请检查您是否设置了
CopyToOutputDirectory="Always"
。如果设置了,这将在每次构建项目时将文件复制到输出目录,无论文件是否已更改。
参考文档: