Asp.net core 如何检查ASP.NET核心RC2/1.0 Razor视图是否存在编译错误?
Razor视图预编译由于 如果其中一个.cshtml文件中存在语法错误,是否有办法使CI生成失败,或者在重新进行预编译之前,这是不可能的Asp.net core 如何检查ASP.NET核心RC2/1.0 Razor视图是否存在编译错误?,asp.net-core,Asp.net Core,Razor视图预编译由于 如果其中一个.cshtml文件中存在语法错误,是否有办法使CI生成失败,或者在重新进行预编译之前,这是不可能的 (我正在HelloMvc项目上测试这一点,Views\Home\Index.cshtml文件可以包含任何内容,dotnet build仍将成功。)当前的RC2生成系统似乎完全忽略了编译器/预处理文件夹-您可以将任何内容放入其中,它不会生成生成生成错误。在Roslyn重新连接以进行预编译之前,我认为目前不可能在构建阶段检查.cshtml文件 我发现的唯一解决方法
(我正在HelloMvc项目上测试这一点,
Views\Home\Index.cshtml
文件可以包含任何内容,dotnet build
仍将成功。)当前的RC2生成系统似乎完全忽略了编译器/预处理
文件夹-您可以将任何内容放入其中,它不会生成生成生成错误。在Roslyn重新连接以进行预编译之前,我认为目前不可能在构建阶段检查.cshtml文件
我发现的唯一解决方法是让Visual Studio使用一些肮脏的精细/替换技巧打开项目中的每个.cshtml文件,并让Intellisense引擎检查razor代码
更新
查看,似乎整个RazorPreCompileModule
本身实际上已被删除,并且。即使手动将此代码添加回项目中,dotnetbuild看起来也不会运行任何编译模块
更新2
视图编译回到ASP.NET Core 1.1中
要启用它,请将以下内容添加到project.json“dependencies”部分:
以下是您的“工具”部分:
在“脚本”下,将razor precompile命令添加到“postpublish”:
更新3-csproj
我们终于开始着手迁移到VS2017,并将项目迁移到csproj。这当然打破了剃须刀的预编译,男孩是一个兔子洞,以找出如何修复它-的
您可能遇到的第一个问题是xproj/project.json->csproj自动迁移失败。如果在project.json
中有postpublish
脚本部分,则自动迁移将失败,因此在迁移之前,请继续并完全删除该部分
事实证明,您仍然可以通过将..
添加到.csproj
中来运行发布后脚本,但这对于razor预编译来说是不必要的。因此,无需进一步讨论,以下是迁移项目后如何在VS2017/csproj land中启用razor预编译:
标记的
中,添加:
部分中,添加:
true
你完成了。构建系统现在将在每次发布项目时运行razor预编译。发布时,您应该在生成输出中看到类似于myApp的
Razor视图编译->obj\Release\netcoreapp1.1\myApp.PrecompiledViews.dll的内容。
。既然ASP核心项目已移回csproj格式,您有什么想法吗?@Ryan这是用于发布的。那么普通的构建/编译呢?@MoHradA我还没有找到一个受支持的方法在构建时执行此操作,没有
标记。生成后目标看起来也不起作用,因为razor precompile命令不再起作用。@Ryan我照你说的做了,但在重建项目时它不会显示视图中的错误。@Sergey它只尝试在发布时生成razor页面,不幸的是不生成。
"dependencies": {
"Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Design": "1.1.0-preview4-final"
}
"tools": {
"Microsoft.AspNetCore.Razor.Tools”: “1.1.0-preview4-final",
"Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Tools": "1.1.0-preview4-final"
}
"scripts": {
"postpublish": [
"dotnet razor-precompile -configuration %publish:Configuration% -framework %publish:TargetFramework% -output-path %publish:OutputPath% %publish:ProjectPath%"
]
}