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