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

仅GitHub Actions构建时提示找不到类型或命名空间名称

问题根因

和代码裁剪没关系,两个配置问题导致CI环境编译失败:

  • 你那个独立的Blazor组件类库加了<SupportedPlatform Include="browser" />配置,这个是专门给纯Blazor WebAssembly客户端类库用的标记,代表程序集仅支持浏览器运行环境。GitHub Actions用的Ubuntu Runner做Release构建时,.NET SDK会判定这个类库和ASP.NET Core服务端的非browser运行场景不兼容,直接把它从编译引用列表里剔除了,最后Razor页面编译的时候自然找不到MyRootRouterComponent类型。本地Windows环境下SDK对这个标记的校验没那么严格,不会直接剔除引用,所以本地不管Debug还是Release都能正常编译,你手动本地编译完Zip Deploy传的是现成产物,当然也不会报错。
  • 你主项目里写的项目引用用的是Windows专属的反斜杠路径..\MY_REFERENCED_PROJECT.csproj,Linux文件系统是严格区分大小写、对路径分隔符的处理和Windows有差异,如果仓库里实际存的项目文件名大小写和你写的不一致,本地Windows因为路径不区分大小写不会出问题,CI环境就会找不到被引用的项目。
修复方案

按顺序改就行:

  1. 打开被引用的组件类库的csproj文件,直接删掉<SupportedPlatform Include="browser" />这整行配置。如果这个类库需要同时给Blazor WASM和Blazor Server/MVC项目用,删掉这个限制就可以双场景兼容,不需要加其他平台标记。
  2. 把主项目里的项目引用路径改成跨平台的正斜杠格式,同时确保写的文件名大小写和仓库里实际的csproj文件名完全一致,参考格式:
<ProjectReference Include="../MyReferencedProject.csproj" />
  1. (可选兜底)如果改完上面两步还有问题,就在主项目csproj的第一个PropertyGroup块里加一行配置,关闭Razor编译时自动跳过未检测到引用的逻辑:
<RazorCompileOnBuildSkipUnusedReferences>false</RazorCompileOnBuildSkipUnusedReferences>

改完提交代码重新跑GitHub Actions工作流即可,不需要调整现有工作流的构建步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 02:30:53