【问题标题】:Why do dotnet command line builds fail on MVC View errors but VS2017 does not?为什么 dotnet 命令行构建会因 MVC View 错误而失败,但 VS2017 不会?
【发布时间】:2018-07-18 22:29:51
【问题描述】:

我正在 VS2017 中开发一个 .NET Core 2 MVC 项目。我注意到在使用命令行构建时,我的 Razor 视图中的任何 C# 错误都会导致构建失败。但是,在 VS2017 中构建时,构建将运行良好。如果我打开了包含 C# 错误的 .cshtml 文件,它们将在错误列表中显示为错误,但不会阻止构建完成。

我不确定为什么我会得到两个不同的结果,因为两者肯定都在后台使用 MSBuild?有没有办法让 VS 以与命令行相同的方式在 Razor C# 错误上失败?

【问题讨论】:

  • 你在命令行和VS中使用相同的目标(发布/调试)吗?
  • 啊,当然,我是从命令行以发布模式构建的。在调试模式下查看这些消息仍然很有用,这可能吗?
  • 我不确定。这可能是可能的,但它可能会稍微减慢您的构建速度。我在这里查看以供参考:View Compilation
  • 感谢您的链接,我想我明白发生了什么。 Razor 视图仅在发布时编译,而不是在构建时编译。看起来现在无法在 build 上完成。
  • 我也检查了我的构建脚本,看起来我的构建脚本也在发布,因此消息。

标签: razor msbuild visual-studio-2017 .net-core asp.net-core-mvc


【解决方案1】:

使用 ASP.NET Core 2.x Razor,如果包含 Microsoft.AspNetCore.Mvc.Razor.ViewCompilation 包,则可以在发布时预编译视图(将 MvcRazorCompileOnPublish 设置为 true 是可选的)。目前无法将视图编译为标准调试构建的一部分。

更多详情见Razor view compilation and precompilation in ASP.NET Core

如果您的项目以 .NET Framework 为目标,请包含对 Microsoft.AspNetCore.Mvc.Razor.ViewCompilation:

<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="2.0.0" PrivateAssets="All" />

通过执行 项目根目录下的命令如下:

> dotnet publish -c Release

一个 .PrecompiledViews.dll 文件,包含已编译的 Razor 视图,在预编译成功时生成。

【讨论】:

    猜你喜欢
    • 2019-09-20
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    • 2014-12-19
    • 1970-01-01
    • 2018-12-09
    • 1970-01-01
    • 2015-07-02
    相关资源
    最近更新 更多