如何将 razor 视图分发到 .NET Core 中的另一个应用程序

How to distribute razor views to another application in .NET Core

我已经在 .NET Core 中创建了 Web 应用程序 - Asp.Net MVC

此应用程序包含一些 Razor Views 但我想将这些视图共享给另一个应用程序,例如使用 DLL 或类似中间件。

这是一些关于分布 Controllers 示例的信息,但在 Views 周围没有什么特别的 - https://docs.microsoft.com/en-us/aspnet/core/mvc/advanced/app-parts

我试过像这样添加控制器:

var assembly = typeof(Project.HomeController).GetTypeInfo().Assembly;

services.AddMvc()
        .AddApplicationPart(assembly);

效果很好,但我不知道如何添加视图。

如何将 Razor Views 分发到另一个应用程序?是否可以像中间件一样将它们导入 MVC middleware

您可以创建一个普通的 netstandard1.6 库,即您的控制器所在的位置,并使用以下命令将视图资源嵌入到您的 csproj 中的该 dll 中:

  <ItemGroup>
    <EmbeddedResource Include="Views\**\*.cshtml" />
  </ItemGroup>

之后,您可以使用 RazorViewEngineOptions 注册它们:

// Add views provided in this assembly.     
services.Configure<RazorViewEngineOptions>(options =>
{
    options.FileProviders.Add(
        new EmbeddedFileProvider(typeof(ClassInLibrary).GetTypeInfo().Assembly));
});

其中 "ClassInLibrary" 是您库中的一个 class,您可以从中获取程序集信息。