You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在文件变更时运行自定义MSBuild目标?

问题描述

我希望实现以下MSBuild行为:

  • 构建干净项目时,触发自定义目标OnFilesChange;
  • 无任何变更时重新构建,跳过整个构建流程且不触发该目标;
  • 仅修改./Plugins文件夹中的跟踪文件时,仅触发OnFilesChange目标而非整个构建。

请问是否可行?我有一个空C#项目,其.csproj文件配置如下:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <SourceFilesFiles Include="Plugins\test.txt" />
    <DestinationFiles Include="$(OutputPath)\Plugins\test.txt" />
  </ItemGroup>

  <Target Name="OnFilesChange" Inputs="@(SourceFilesFiles)" Outputs="@(DestinationFiles)">
    <Copy SourceFiles="@(SourceFilesFiles)" DestinationFiles="@(DestinationFiles)" />
  </Target>

</Project>

我尝试创建该目标,使其在构建时对比./Plugins/test.txt与输出目录中的对应文件,变更时触发目标,期望遵循增量构建流程但未成功。


可行的临时解决方案

目前未找到完美解决方案,但有一个可行的临时办法:在.csproj中添加以下配置:

<ItemGroup>
  <AdditionalFiles Include="path\to\you\files\**\*.*" Exclude="**\dist\**\*.*;**\node_modules\**\*.*;etc\files\to\exclude.txt" />
</ItemGroup>

该方案可跟踪额外文件并触发常规构建(而非跳过最新检查)。注意:AdditionalFiles通常用于代码分析器。


内容的提问来源于stack exchange,提问作者Peter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 15:08:26