gpt4 book ai didi

asp.net-core - 如何检查 ASP.NET Core RC2/1.0 Razor View 的编译错误?

转载 作者:行者123 更新时间:2023-12-01 22:50:12 25 4
gpt4 key购买 nike

Razor View 预编译 has been removed from RC2由于issues with getting it to work in .NET Core .

如果其中一个 .cshtml 文件存在语法错误,是否有办法使 CI 构建失败,或者在预编译恢复之前这不可能实现?

(我正在 ASP.NET CLI samples 的 HelloMvc 项目上对此进行测试。Views\Home\Index.cshtml 文件中几乎可以包含任何内容,dotnet build仍然会成功。)

最佳答案

当前的 RC2 构建系统似乎完全忽略了 Compiler/Preprocess文件夹 - 您可以在其中放入任何内容,并且不会产生构建错误。在 Roslyn 连接回来进行预编译之前,我认为目前无法在构建阶段检查 .cshtml 文件。

我发现的唯一解决方法是让 Visual Studio 使用一些肮脏的精细/替换技巧打开项目中的每个 .cshtml 文件,并让 Intellisense 引擎检查 razor 代码。

更新

查看commit that removed razor precompilation ,似乎整个RazorPreCompileModule本身实际上已被删除,并且 won't be back for some time 。即使此代码被手动添加回您的项目中,dotnet build 看起来也不会运行任何编译模块。

更新2

View 编译在 ASP.NET Core 1.1 中回归!

要启用它,请将以下内容添加到project.json“依赖项”部分:

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

然后在“脚本”下,将 razor-precompile 命令添加到“发布后”:

"scripts": {
"postpublish": [
"dotnet razor-precompile -configuration %publish:Configuration% -framework %publish:TargetFramework% -output-path %publish:OutputPath% %publish:ProjectPath%"
]
}

更新 3 - csproj

我们终于开始迁移到 VS2017 并将项目迁移到 csproj。这当然破坏了 razor 预编译,天哪,弄清楚如何修复它真是一个兔子洞 - official instructions are here .

您可能遇到的第一个问题是自动 xproj/project.json -> csproj 迁移失败。如果您有 postpublish,自动迁移将会失败project.json 中的脚本部分,因此请在进行迁移之前完全删除该部分。

事实证明,您仍然可以通过添加 <Target Name="PostPublishTarget" AfterTargets="Publish">...</Target> 来运行发布后脚本。给您.csproj ,但无论如何,这对于 razor 预编译来说是不必要的。因此,言归正传,迁移项目后,以下是如何在 VS2017/csproj 环境中启用 razor 预编译:

  1. 将正确的 View 编译包引用添加到您的 csproj。在 <ItemGroup>包含您项目的所有 <PackageReference>标签,添加:

    <PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="1.1.0" />

  2. 将 MvcRazorCompileOnPublish 属性添加到您的 csproj。在 <PropertyGroup>包含您的项目的部分 <VersionPrefix> , <TargetFramework>等等,添加:

    <MvcRazorCompileOnPublish>true</MvcRazorCompileOnPublish>

你就完成了。现在,每次发布项目时,构建系统都会运行 razor 预编译。您应该看到类似 Razor view compilation for myApp -> obj\Release\netcoreapp1.1\myApp.PrecompiledViews.dll 的内容在发布时的构建输出中。

关于asp.net-core - 如何检查 ASP.NET Core RC2/1.0 Razor View 的编译错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37662225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com