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

如何禁止Visual Studio自动在csproj文件的ItemGroup中添加Remove指令?

解决WPF项目中IDE自动为ViewModel文件添加Remove指令的问题

我之前也碰到过一模一样的糟心事,在.NET 5 WPF项目里想让ViewModel自动关联对应的XAML文件,结果每次新增ViewModel,Visual Studio就自动往csproj里插Remove指令,每次都要手动删掉,太折腾人了。

为什么会出现这个问题?

这是因为IDE(比如Visual Studio)默认会显式管理项目中的文件,当你自定义了一个ViewModelFiles项组并用通配符**\*ViewModel.cs包含所有ViewModel文件时,IDE在添加新文件时,会认为这个文件已经被通配符涵盖,但它又想单独跟踪这个文件的状态,所以就会自动添加<ViewModelFiles Remove="..." />来“抵消”通配符的包含逻辑,避免重复处理文件。

正确的解决配置

不用自定义新的项组,直接修改项目默认的Compile项元数据就好——毕竟ViewModel文件本身就是编译项。用Update关键字批量更新所有匹配文件的属性,IDE就不会再乱加Remove指令了。

把你的csproj配置改成这样:

<ItemGroup>
  <Compile Update="**\*ViewModel.cs">
    <DependentUpon>$([System.String]::Copy('%(FileName)').Replace('ViewModel', '.xaml'))</DependentUpon>
  </Compile>
</ItemGroup>

这里提个小细节:你原来的Replace('Model', '.xaml')应该是笔误,改成Replace('ViewModel', '.xaml')才能正确把InputActionViewModel.cs关联到InputAction.xaml哦。

原理说明

这个配置的核心是直接操作项目默认的Compile项集合,用Update关键字对所有符合**\*ViewModel.cs规则的文件,设置它们的DependentUpon元数据。IDE会认可这种批量修改的方式,不会再为单个文件生成Remove指令,因为它不需要再单独显式管理这些文件的包含状态了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 13:07:42