Razor 为什么dotnet命令行生成会因MVC视图错误而失败,而VS2017不会?

Razor 为什么dotnet命令行生成会因MVC视图错误而失败,而VS2017不会?,razor,msbuild,visual-studio-2017,.net-core,asp.net-core-mvc,Razor,Msbuild,Visual Studio 2017,.net Core,Asp.net Core Mvc,我正在VS2017中从事一个.NET Core 2 MVC项目。我注意到,当使用命令行构建时,Razor视图中的任何C#错误都会导致构建失败。但是,在VS2017中构建时,构建将正常运行。如果打开了一个包含C#错误的.cshtml文件,它们将在错误列表中显示为错误,但不会阻止构建完成 我不确定为什么会得到两个不同的结果,因为肯定这两个结果都在幕后使用MSBuild?有没有一种方法可以让VS像命令行一样在Razor C#错误上失败?使用ASP.NET Core 2.x Razor,如果包含Micr

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


我不确定为什么会得到两个不同的结果,因为肯定这两个结果都在幕后使用MSBuild?有没有一种方法可以让VS像命令行一样在Razor C#错误上失败?

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

有关详细信息,请参阅

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


通过执行 在项目根目录下执行以下命令:

> dotnet publish -c Release
一个.PrecompiledViews.dll文件,包含已编译的 Razor视图,在预编译成功时生成


您是否在命令行和VS中使用相同的目标(release/debug)?啊,当然,我是在命令行的发布模式下构建的。在调试模式下查看这些消息仍然很有用,这可能吗?我不确定。这是可能的,但它可能会减慢你的建设一点。我在这里寻找参考:谢谢你的链接,我想我明白发生了什么。Razor视图仅在发布时编译,而不是在生成时编译。现在看起来不可能在构建时执行此操作。我也检查了构建脚本,看起来构建脚本也在执行发布,因此出现了消息。