首页 > 其他分享 >使用RazorGenerator.MsBuild自定义razor页

使用RazorGenerator.MsBuild自定义razor页

时间:2024-10-24 17:12:45浏览次数:1  
标签:razor MsBuild 自定义 RazorLib RazorGenerator netstandard2.0 public

创建控制台项目

使用类库项目,.net standard.2.0

nuget安装RazorGenerator.MsBuild

这样在项目的packages目录能看到RazorGenerator.MsBuild.2.5.0

razor页类定义

namespace RazorLib
{
    public abstract class RazorPage
    {
        public virtual void Execute()
        {

        }

        public virtual void WriteLiteral(string str)
        { 
            
        }
    }
}

index.cshtml

@* Generator: Template TypeVisibility: Internal GeneratePrettyNames: True TrimLeadingUnderscores : true *@
@inherits RazorLib.RazorPage

<div class="text-center">
    <h1 class="display-4">Welcome</h1>
    <p>Learn about <a href="https://learn.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>

开头的注释行是必须的,具体含义到RazorGenerator.MsBuild的github查看

添加Razor.build到项目

需要将RootNamespace改为你自己的

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="PrecompileRazorFiles" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="..\packages\RazorGenerator.MsBuild.2.5.0\build\RazorGenerator.MsBuild.targets" />
  <PropertyGroup>
    <RootNamespace>RazorLib</RootNamespace>
    <GeneratePrettyNames>true</GeneratePrettyNames>
    <RazorViewsCodeGenDirectory>$(MsBuildProjectDirectory)\</RazorViewsCodeGenDirectory>
  </PropertyGroup>
</Project>

编辑项目文件RazorConsole.csproj

追加以下内容:

<PropertyGroup>
	<TargetFrameworks>netstandard2.0;</TargetFrameworks>
	<DebugType>portable</DebugType>
	<RootNamespace>RazorLib</RootNamespace>
</PropertyGroup>
<PropertyGroup>
	<MSBuild14FullPath>$(MSBuildProgramFiles32)\..\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe</MSBuild14FullPath>
	<MSBuildCurrentFullPath>$(MSBuildBinPath)\MSBuild.exe</MSBuildCurrentFullPath>
	<RazorProjectFile>Razor.build</RazorProjectFile>
	<InnerTargets>GenerateRazorClasses;Build</InnerTargets>
</PropertyGroup>

<Target Name="GenerateRazorClasses">
	<Exec Command="&quot;$(MSBuildCurrentFullPath)&quot; $(RazorProjectFile) /v:quiet /nologo" Condition="Exists('$(MSBuildCurrentFullPath)')" />
	<Exec Command="&quot;$(MSBuild14FullPath)&quot; $(RazorProjectFile) /v:quiet /nologo" Condition="Exists('$(MSBuild14FullPath)') and !Exists('$(MSBuildCurrentFullPath)')" />
	<Warning Text="Classes for Razor files (*.cshtml) weren't re-generated: couldn't find the '$(MSBuild14FullPath)' or '$(MSBuildCurrentFullPath)' file" Condition="!Exists('$(MSBuild14FullPath)') and !Exists('$(MSBuildCurrentFullPath)')" />
</Target>

注意要用netstandard2.0;不要写成netstandard2.0

标签:razor,MsBuild,自定义,RazorLib,RazorGenerator,netstandard2.0,public
From: https://www.cnblogs.com/readafterme/p/18499963

相关文章

  • 【泛微E9】ESB中心自定义接口无法保存的解决方法
    问题描述:ESB中心自定义接口保存失败,前端F12看请求状态码404解决方法:安全包拦截导致,处理方法如下:将weaver_isFix_integration_action.properties文件放到ecology/WEB-INF/prop目录下找到拦截日志:\ecology\WEB-INF\securitylog\systemSecurityxxx.log搜索最近一次出现的......
  • 【C语言】自定义类型(结构体、枚举、联合的详解)
    写在前面今天是10月24日来到了一年一度的程序......
  • vue - 自定义吸附窗口
    业务需求以共享单车界面为例,地图上分布着大量的共享单车,鼠标悬浮在单车上,弹出一个吸附弹窗,内容显示单车详细信息。分析很明显,因为单车的数量可能非常多,我们不可能用显示隐藏的方式实现;合理的做法是,所有单车公用一个弹窗面板,悬浮的时候刷新面板上的数据。方案看着改吧,element......
  • MyBatis 如何映射 Enum(使用 EnumTypeHandler、自定义 TypeHandler)
    文章目录1.MyBatis中的Enum映射概述2.使用EnumTypeHandler2.1代码示例:将Enum映射为字符串2.2代码示例:将Enum映射为整数2.3如何配置EnumTypeHandler3.自定义TypeHandler3.1为什么需要自定义TypeHandler3.2自定义TypeHandler的实现3.3如何注册自定......
  • 「Java开发指南」如何共享Spring代码生成自定义?
    本教程将引导您共享Spring代码生成自定义,共享自定义有助于在开发人员和项目之间设置编码标准,并允许通过开发人员社区扩展功能。在本教程中,您将学习如何:创建自定义项目将项目打包以便共享在另一个项目中使用打包的自定义注意:自定义Spring代码生成需要MyEclipseSpring或Bling......
  • C#的自定义Tip窗体 - 开源研究系列文章
          上次编写了自定义的提示和对话框窗体,这次记录的是自定义的Tip窗体,用于显示提示操作。有时间没编程了,这次就当进行了记录。 1、项目目录;  2、源码介绍;1)实现;  2)应用;  3、运行界面;  4、使用介绍......
  • 【Shiro】12.自定义过滤器
    通过查看若依源码(ruoyi-framework)下的过滤器文件(src.main.java.com.ruoyi.framework.config.ShiroConfig)可以发现设置了过滤器。过滤器(Filter)是JavaServlet技术中的一个重要部分,主要用于在Servlet处理请求之前或响应之后对数据进行某些处理。可以这么理解。如果类比到......
  • Nginx根据返回的错误码,自定义错误页面回显
    在/data/nginx/html/uhn目录下创建一个error.html[root@localhost~]#echo"errorpage">/data/nginx/html/uhn/error.html然后修改配置文件,将 500502503504404的错误页面指向/error.html页面[root@localhost~]#cdweb[[email protected]]#viuhn.confserver......
  • Spring Cloud --- Gateway自定义全局过滤器
    Gateway自定义全局过滤器介绍全局过滤器对所有路由生效。新建类MyGlobalFilter并实现GlobalFilter,Ordered两个接口自定义接口调用耗时统计的全局过滤器@Component@Slf4jpublicclassMyGlobalFilterimplementsGlobalFilter,Ordered{publicstaticfinalS......
  • vTESTstudio系列14--vTESTstudio中自定义函数介绍1
    在上篇vTESTstudio系列的文章中,我们基于osek_tp.dll实现了诊断的发送和回复的最基本的脚本,但是我们可以看出来,这样的脚本是不具有普适性的,为了生成一个普适性的诊断请求回复的函数,接下来本系列的几篇文章会开始介绍一些优自定义的小函数,Let'sGo!!!目录1.自定义函数:1.1字符......