【问题标题】:In asp.net core 2, is there a way to deploy uncompiled .cshtml files?在 asp.net core 2 中,有没有办法部署未编译的 .cshtml 文件?
【发布时间】:2018-03-16 12:00:18
【问题描述】:

我正在使用 RazorLight 将 razor 模板(.cshtml 文件)呈现为字符串,然后在电子邮件中使用这些模板。

这在开发中运行良好,但在部署时(通过 WebDeploy 到 Azure App Services),所有 .cshtml 文件都被编译为 [Project].PrecompiledViews.dll,因此我无法访问原始 .cshtml...还有其他方法可以解决此问题,例如将模板存储在数据库或 blob 存储中,但将模板与我的项目一起发布很方便。让它们嵌入资源可能是一种选择,虽然感觉有点难看。

我尝试将它们复制到我的 wwwroot 文件夹中,并将它们标记为始终复制,并且我已经研究了几个小时。到目前为止没有运气。有没有办法让这项工作,也许在 .csproj 级别?

【问题讨论】:

  • 你能不能用 .html 扩展名重命名它们(或者如果有人直接访问 URL,浏览器不会尝试呈现的更好的东西),这样构建引擎就不会尝试编译它们?我不知道 Razorlight 工具,但如果它们仍然是 Razor 模板,但只是具有不同的扩展名,它是否仍然能够处理它们?我希望它不会在乎。
  • @ADyson 这可能是一个选项,它只是破坏了 IDE,因为它基于该扩展识别 razor 语法。
  • 您可以从编译中排除子文件夹:stackoverflow.com/questions/46978823/…
  • 我突然想到 IDE 可以配置为在其他文件扩展名上提供智能感知等
  • @ADyson 嗯,这是真的,我可能会制作它 .razor 之类的。有点笨拙,但值得一试!

标签: asp.net asp.net-mvc razor asp.net-core-2.0 webdeploy


【解决方案1】:

是的。可以像在早期版本的 .Net Core 中一样部署原始 CHTML 文件。 我们必须在 csproj 文件中将以下属性设置为 false:

            MvcRazorCompileOnPublish

请参阅此位置以获取更多信息: https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-compilation?view=aspnetcore-2.1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    • 2011-09-02
    相关资源
    最近更新 更多