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

MSBuild中通配符*无法识别新增文件的问题求助

问题原因

你在.props文件顶层定义的FixJsFiles文件组,是在MSBuild评估阶段就完成解析的——这个阶段发生在所有目标执行之前,通配符wwwroot/js/*.js会扫描当时磁盘上的文件并生成固定列表。一旦评估阶段结束,后续新增的文件不会自动加入该列表,哪怕你重建解决方案(只有重建时重新加载项目才会重新评估,但重建后新增的文件依然不会被后续发布的评估阶段捕获)。

解决方案

将文件组的定义移到MinifyJs目标内部,让它在执行阶段动态生成,这样每次目标运行时都会重新扫描磁盘,获取最新的文件列表:

<Target Name="MinifyJs" AfterTargets="AfterPublish" Outputs="%(FixJsFiles.Identity)">
  <!-- 动态创建文件组,每次执行目标时重新扫描 -->
  <ItemGroup>
    <FixJsFiles Include="wwwroot/js/*.js" />
  </ItemGroup>

  <!-- 这里执行你的变量配置和压缩命令 -->
  <!-- 示例:<Exec Command="minifier.exe -i %(FixJsFiles.Identity) -o $(PublishDir)/wwwroot/js/%(FixJsFiles.Filename).min.js" /> -->
</Target>

如果你的压缩操作是针对发布到目标文件夹后的文件,只需把通配符路径改成发布目录:

<ItemGroup>
  <FixJsFiles Include="$(PublishDir)/wwwroot/js/*.js" />
</ItemGroup>

这样修改后,每次发布触发MinifyJs时,所有新增的JS文件都会被扫描到并处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 20:35:21