【问题标题】:Razor Class Library: referencing other assembly in Page breaks Azure publishRazor 类库:在分页符 Azure 发布中引用其他程序集
【发布时间】:2018-12-13 03:19:48
【问题描述】:

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

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

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

我在 Page1Model 类中引用它,如下所示:

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 存储库。

【问题讨论】:

    标签: c# razor asp.net-core razor-pages asp.net-core-2.1


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多