Библиотека классов Razor: ссылка на другую сборку на странице разрывает публикацию в Azure

Отправная точка: класс Razor Библиотека (RCL) учебник. Я могу опубликовать его в 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 предварительная компиляция страницы 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. Почему на этапе публикации пытается перекомпилировать страницы Razor из RCL?
  2. Почему он не может найти пространство имен в моей библиотеке?

Я создал небольшой репозиторий GitHub со всеми подробностями.


person Métoule    schedule 04.07.2018    source источник


Ответы (1)


Исправление заключалось в том, чтобы просто добавить ссылку на соответствующий Razor SDK в проект RCL. По какой-то причине использовалась старая версия.

Исправление: добавить ссылку на пакет Nuget Microsoft.NET.Sdk.Razor версии 2.1.1.

person Métoule    schedule 05.07.2018