Razor Class 库:在分页符 Azure 发布中引用其他程序集
Razor Class Library: referencing other assembly in Page breaks Azure publish
起点:Razor Class Library (RCL) tutorial。我可以在 Azure 上发布它,并按预期访问 Razor 页面。
现在,我正在创建另一个 .netstandard
库,名为 MyCompany.ClassLibrary1
。它包含一个 class:
namespace MyCompany.ClassLibrary1
{
public class Class1
{
public string Message => "This is a test";
}
}
我在 Page1Model
class 中引用它,像这样:
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?)
问题:
- 为什么发布步骤会尝试从 RCL 重新编译 Razor 页面?
- 为什么它无法从我的库中找到命名空间?
我创建了一个包含所有详细信息的小型 GitHub 存储库。
修复只是将对正确 Razor SDK 的引用添加到 RCL 项目。由于某种原因,它使用的是旧版本。
修复:添加对 Nuget 包 Microsoft.NET.Sdk.Razor
版本 2.1.1
.
的引用
起点:Razor Class Library (RCL) tutorial。我可以在 Azure 上发布它,并按预期访问 Razor 页面。
现在,我正在创建另一个 .netstandard
库,名为 MyCompany.ClassLibrary1
。它包含一个 class:
namespace MyCompany.ClassLibrary1
{
public class Class1
{
public string Message => "This is a test";
}
}
我在 Page1Model
class 中引用它,像这样:
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?)
问题:
- 为什么发布步骤会尝试从 RCL 重新编译 Razor 页面?
- 为什么它无法从我的库中找到命名空间?
我创建了一个包含所有详细信息的小型 GitHub 存储库。
修复只是将对正确 Razor SDK 的引用添加到 RCL 项目。由于某种原因,它使用的是旧版本。
修复:添加对 Nuget 包 Microsoft.NET.Sdk.Razor
版本 2.1.1
.