Библиотека классов Razor: ссылки на другие сборки в разрывах страниц Публикация Azure - PullRequest
0 голосов
/ 04 июля 2018

Начальная точка: учебник Razor Class Library (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 репозиторий со всеми подробностями.

1 Ответ

0 голосов
/ 05 июля 2018

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

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

...