Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 如何检查ASP.NET核心RC2/1.0 Razor视图是否存在编译错误?_Asp.net Core - Fatal编程技术网

Asp.net core 如何检查ASP.NET核心RC2/1.0 Razor视图是否存在编译错误?

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文件 我发现的唯一解决方法

Razor视图预编译由于

如果其中一个.cshtml文件中存在语法错误,是否有办法使CI生成失败,或者在重新进行预编译之前,这是不可能的


(我正在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预编译:

  • 将正确的视图编译包引用添加到csproj。在包含所有项目的
    标记的
    中,添加:

  • 将MvcRazorCompileOnPublish属性添加到csproj。在包含项目的
    部分中,添加:

    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%"
        ]
    }