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

如何用通配符配置Bond生成的C#文件与Bond文件关联显示

批量配置Bond生成C#文件与原Bond文件的Visual Studio关联

我正在使用Bond工具,它会读取项目根目录下的.bond文件,在obj文件夹的对应中间输出路径中生成带_types后缀的C#文件,示例结构如下:

Foo.bond
\obj\x64\Debug\net6.0\win10-x64\
  Foo_types.cs

我希望在Visual Studio中让这些生成的C#文件作为对应Bond文件的子项显示。单个文件对的配置很简单,示例如下:

<ItemGroup>
   <None Include="$(IntermediateOutputPath)\Foo_types.cs">
     <DependentUpon>Foo.bond</DependentUpon>
     <Link>Foo_types.cs</Link>
  </None>
</ItemGroup>

但如果文件数量多,逐个配置太繁琐,如何用通配符/glob模式批量配置?需要自动去掉C#文件名的_types后缀,关联到对应的Bond文件,当前配置模板中DependentUpon节点的内容该怎么写?

解决方案

使用MSBuild的字符串替换功能来处理文件名,完整的批量配置如下:

<ItemGroup>
  <None Include="$(IntermediateOutputPath)\*_types.cs">
    <DependentUpon>$([System.String]::Copy('%(Filename)').Replace('_types', '')).bond</DependentUpon>
    <Link>%(Filename)%(Extension)</Link>
  </None>
</ItemGroup>

说明

这里通过$([System.String]::Copy('%(Filename)').Replace('_types', ''))调用MSBuild的内置字符串处理方法:

  1. %(Filename)会获取当前匹配到的C#文件的文件名(比如Foo_types)
  2. 调用Replace('_types', '')把文件名中的_types后缀移除,得到原Bond文件的名称(比如Foo)
  3. 最后拼接.bond,就能正确关联到项目根目录下对应的Foo.bond文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 12:13:17