在没有 AspNetCore Web 应用程序的情况下使用存储在 Razor Class 库 3.0 (RCL) 中的 Razor 模板

Using Razor Templates Stored in Razor Class Library 3.0 (RCL) Without AspNetCore Web Application

我正在使用 Razor 模板 (cshtml) 构建 HTML 以用于电子邮件。虽然我可以让这一切正常工作并且我可以从 ASPNetCore 3.0 Web 应用程序发送电子邮件,但我实际上想从另一个不是 Web 应用程序的进程发送电子邮件。理想情况下,我想对电子邮件进行排队,这可以从任意数量的后端进程触发,然后从像服务这样的定时器发送这些电子邮件,该服务作为 windows 服务或可能作为后端工作人员运行 运行在 Azure 中通过 Functions 之类的东西。

有什么方法可以在 .NetCore 控制台或其他未托管在 AspNetCore 中的应用程序中的 RCL 中利用 RCL 模板?

我想没有办法做到这一点我很抱歉。 :(

如果我对你的问题理解正确,你也可以使用RazorEngine, which I used in .NET Framework 4.6.2 Class Library. There is a .Net Core Nuget

我从控制台应用程序、Windows 服务和 Azure 云服务(工作者角色)中引用了此类 Class 库项目。

在我的设置中,我必须将 Razor 文件标记为内容,以便将它们复制到 bin 文件夹中。此外,如果库被另一个库引用然后使用该库,它会变得更加复杂;内容没有被复制或变得扁平化(所有 razor 视图最终都在 bin 文件夹的根目录中而不是以下目录结构),通过编辑项目文件并添加您自己的复制构建任务可以解决这个问题。或者我必须将剃刀视图嵌入到 DLL 中。

这几年可能会有改进,正如我所说,几年前我使用过 RazorEngine。在 .Net Core RCL 中也可能有所不同,但我相信这是可能的。

现在,我正在使用第 3 方服务,如 SendGrid 或 MailJet。对我来说,使用它们可以避免上述大部分问题,并为市场营销和其他非技术用户提供更好的 emails/templates/campaigns 洞察力。他们可以根据自己的喜好编辑和修改模板,而无需 (m) 任何代码部署。

您必须通过 ASP.net 核心引擎 运行 代码,以便将 Razor 代码转换为 html。 否则使用简单的 html 模板。