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

Visual Studio自动在ItemGroup中移除Razor组件如何解决?

问题成因

这个自动追加Remove配置的行为不是Visual Studio的bug,是Microsoft.NET.Sdk.Razor(Blazor/Razor页面项目默认引用的SDK)的项管理机制触发的:

  • SDK默认会自动递归扫描项目目录,把所有.razor/.cshtml文件按规则纳入Content、RazorGenerate等项集合,参与编译和发布
  • 当SDK检测到目标文件存在项定义冲突:比如文件被重复包含、文件生成操作被手动改成过非Content值、项目里存在自定义通配符匹配规则和默认规则重叠、项目系统缓存了旧的文件属性标记时,就会自动生成对应的Remove配置,避免重复项导致编译报错

注意:不要用注释的方式保留这些Remove配置,VS每次重算项目配置时都会检测被注释的失效规则,重新生成可生效的Remove行,排查到根因后直接删除这些冗余配置即可。

解决方法

按优先级从高到低操作,大部分情况前两步就能解决问题:

  • 清理项目缓存
    完全关闭Visual Studio,删除解决方案根目录下的隐藏.vs文件夹,同时删除对应项目目录下的bin、obj文件夹,重新打开解决方案后直接删掉自动生成的Remove配置即可,缓存导致的识别异常这一步就能解决。
  • 核对问题文件的生成操作
    在解决方案资源管理器里找到出问题的两个razor文件(Pages\Publishers\PublishersList.razor、Pages\Components\PublisherForm.razor),右键打开属性面板,确认生成操作设置为「内容」,复制到输出目录设置为「不复制」,保存后删掉冗余的Remove配置行,重启VS即可。
  • 排查自定义项规则冲突
    打开.csproj项目文件,检查有没有自己写的重复通配符规则,比如<Content Include="Pages\**\*.razor" />这类和SDK默认包含规则重叠的配置,删掉这类自定义重复规则即可,不要重复声明SDK已经默认处理的项包含逻辑。
  • 关闭SDK自动项管理(仅适合自定义规则多的项目)
    如果你需要完全手动管控项目内所有文件的包含规则,可以在项目文件的第一个<PropertyGroup>节点下添加如下配置,彻底关闭SDK自动生成Remove项的行为:
<PropertyGroup>
  <EnableDefaultContentItems>false</EnableDefaultContentItems>
  <EnableDefaultRazorGenerateItems>false</EnableDefaultRazorGenerateItems>
</PropertyGroup>

注意:开启这个配置后,SDK不会再自动扫描纳入项目文件,你需要手动把所有需要参与编译的razor、静态资源文件显式写进ItemGroup,否则会出现文件不被识别、路由失效的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 09:33:40