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

无法从Razor类库(RCL)加载Razor页面的问题排查求助

解决方案

1. 修正RCL页面的路由与主项目引用路径

  • RCL中的Index.cshtml页面,@page指令无需指定完整路径,直接写最终访问的路由即可,示例:
    @page "/organizations/index"
    
  • 主项目_Layout.cshtml中的链接,去掉SharedContent/Pages前缀,直接使用路由路径:
    <a class="navbar-brand" asp-page="/Organizations/Index">Org settings</a>
    

2. 修复RCL项目的编译配置(解决views.dll缺失问题)

打开RCL的.csproj文件,确保以下配置正确:

  • 项目SDK必须是Razor专用类型:
    <Project Sdk="Microsoft.NET.Sdk.Razor">
    
  • 添加Razor支持属性并启用编译:
    <PropertyGroup>
      <TargetFramework>net6.0</TargetFramework> <!-- 替换为你实际使用的.NET版本 -->
      <AddRazorSupportForMvc>true</AddRazorSupportForMvc>
      <!-- 启用编译以生成views.dll -->
      <RazorCompileOnBuild>true</RazorCompileOnBuild>
      <RazorCompileOnPublish>true</RazorCompileOnPublish>
    </PropertyGroup>
    

注:Visual Studio UI中确实没有"Generate views in output directory"和"Razor Compile"选项,这类配置需要直接编辑.csproj文件实现。

3. 验证主项目的基础配置

  • 确保主项目正确引用RCL项目,.csproj中应有类似配置:
    <ItemGroup>
      <ProjectReference Include="..\SharedContent\SharedContent.csproj" />
    </ItemGroup>
    
  • 确保主项目启用了Razor Pages:
    • .NET 6+(Program.cs):
      var builder = WebApplication.CreateBuilder(args);
      // 添加Razor Pages服务
      builder.Services.AddRazorPages();
      var app = builder.Build();
      // 映射Razor Pages路由
      app.MapRazorPages();
      app.Run();
      
    • .NET Core 3.1(Startup.cs):
      public void ConfigureServices(IServiceCollection services)
      {
          services.AddRazorPages();
      }
      public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
      {
          // 其他中间件配置...
          app.UseEndpoints(endpoints =>
          {
              endpoints.MapRazorPages();
          });
      }
      

4. 清理重建项目

  • 删除主项目和RCL项目下的bin、obj目录
  • 重新生成整个解决方案,确保编译过程无报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 05:35:18