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