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

如何在.csproj文件中延迟解析通配符*?

问题分析与说明

原项目配置

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <LangVersion>12.0</LangVersion>
    <DebugType>portable</DebugType>
  </PropertyGroup>

  <ItemGroup>
    <None Remove="*.dat" />
    <None Include="*.dat" CopyToOutputDirectory="Always" />
  </ItemGroup>

  <Target Name="PrecompileScript" BeforeTargets="BeforeCompile">
    <Exec Command="dotnet run -c $(Configuration) --no-build --project ../DatGenerator/DatGenerator.csproj -directory $(ProjectDir)" />
  </Target>
</Project>

核心问题

*.dat通配符在MSBuild执行流程中展开过早,此时PrecompileScript目标通过Exec生成的.dat文件尚未创建,导致这些新生成的文件无法被捕获并复制到输出目录。

限制条件

  • 无法直接指定固定输出目录路径,因为项目未设置<OutputType>exe</OutputType>,必须依赖MSBuild内置的输出复制逻辑。
  • 手动逐个列出.dat文件不可行,需要自动适配文件的新增或变更。

当前状态

此前社区认可的解决方案已失效,该问题已提交至MSBuild官方问题追踪平台。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 03:11:04