Razor Class 库:在分页符 Azure 发布中引用其他程序集

Razor Class Library: referencing other assembly in Page breaks Azure publish

起点:Razor Class Library (RCL) tutorial。我可以在 Azure 上发布它,并按预期访问 Razor 页面。

现在,我正在创建另一个 .netstandard 库,名为 MyCompany.ClassLibrary1。它包含一个 class:

namespace MyCompany.ClassLibrary1
{
    public class Class1
    {
        public string Message => "This is a test";
    }
}

我在 Page1Model class 中引用它,像这样:

using Microsoft.AspNetCore.Mvc.RazorPages;
using MyCompany.ClassLibrary1;

namespace RazorClassLib.MyFeature.Pages
{
    public class Page1Model : PageModel
    {
        public string Message;

        public void OnGet()
        {
            Message = new Class1().Message;
        }
    }
}

最后,为了检查一切是否正常,我在 Page1.cshtml 中使用它:

@page
@model RazorClassLib.MyFeature.Pages.Page1Model

<html>
<body>
    OK from Razor page lib: @Model.Message
</body>
</html>

在我的机器上启动时,一切正常。

但是,当尝试在 Azure 上发布 Web 应用程序时,Razor 页面预编译失败,并出现以下错误:

Areas\MyFeature\Pages\Page1.cshtml.cs(2,7): Error CS0246: The type or namespace name 'MyCompany' could not be found (are you missing a using directive or an assembly reference?)

问题

  1. 为什么发布步骤会尝试从 RCL 重新编译 Razor 页面?
  2. 为什么它无法从我的库中找到命名空间?

我创建了一个包含所有详细信息的小型 GitHub 存储库。

修复只是将对正确 Razor SDK 的引用添加到 RCL 项目。由于某种原因,它使用的是旧版本。

修复:添加对 Nuget 包 Microsoft.NET.Sdk.Razor 版本 2.1.1.

的引用