如何使用ASP.NET CORE在视图中获取编译时错误

时间:2015-11-11 23:44:43

标签: asp.net-core asp.net-core-mvc

如何在视图中查看编译时错误并在Mvc6中查看组件?

在MVC 5中,编辑.csproj文件很简单。我们现在怎么做?

3 个答案:

答案 0 :(得分:2)

RC-1的答案

  1. 创建以下RazorPreCompilation类:
  2. namespace YourApp.Compiler.Preprocess
    {
        public sealed class RazorPreCompilation : RazorPreCompileModule
        {
            protected override bool EnablePreCompilation(BeforeCompileContext context) => true;
        }
    }
    
    1. 将此类放在{root} / Compiler / Preprocess。
    2. enter image description here

      1. AddPrecompiledRazorViews方法中为ConfigureServices添加电话。
      2. public void ConfigureServices(IServiceCollection services)
        {
            // ... other code ...
            services
                .AddMvc()
                .AddPrecompiledRazorViews(GetType().GetTypeInfo().Assembly);
            // ... other code ...
        }
        

        如其他答案中所述,当预编译视图时,您无法在应用程序运行时更改它们。此外,有时您必须在项目上进行重建(而不仅仅是构建),以便新代码更改生效。例如,在重建项目之前,纠正Razor方法调用中的拼写错误仍可能会触发编译错误。

        指令更新

        如果您希望使用预处理指令进行此操作,请将它们包围在AddPrecompiledRazorViews调用中,如下所示:

        public void ConfigureServices(IServiceCollection services)
        {
            // ... other code ...
            var mvcBuilder = services.AddMvc()
        
        #if !DEBUG
            mvcBuilder.AddPrecompiledRazorViews(GetType().GetTypeInfo().Assembly);
        #endif
        
            // ... other code ...
        }
        

答案 1 :(得分:0)

您必须添加一个类

AddPrecompiledRazorViews

并将<div onclick="fnOne()"> <a href="#" data-target="#div2">text</a> </div> 添加到启动类中的mvc设置

请参阅此question

答案 2 :(得分:0)

您可以通过将以下类添加到项目中来使用预编译视图。但是,这样做会阻止您在运行时编辑视图。因此,我添加了#if !DEBUG预处理器指令,以便只在发布模式下预编译视图。

#if !DEBUG
namespace MvcBoilerplate.Compiler.Preprocess
{
    using System;
    using Microsoft.AspNet.Mvc;

    /// <summary>
    /// Enable pre-compilation of Razor views, so that errors in your .cshtml files are caught and displayed 
    /// in the Visual Studio errors window at compile time, rather than your sites users receiving a runtime 500 
    /// internal server error. Pre-compilation may reduce the time it takes to build and launch your project but will 
    /// cause the build time to increase. It will also stop edit and continue working for .cshtml files.
    /// </summary>
    public class RazorPreCompilation : RazorPreCompileModule
    {
    }
}
#endif

其次,在Startup.cs中你需要实际使用你可以这样做的预编译视图:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc().AddPrecompiledRazorViews(GetType().GetTypeInfo().Assembly);
}

预编译视图可以更快地启动应用程序启动性能。