C#代码生成器

article/2025/10/12 12:20:03

引言

引言:随着.net Core 的不断发展,它也是一个成熟的平台了,鲁迅说过:成熟的平台就要学会自己写代码,那么今天我就在这里教大家如何让.net Core学会自己写代码。


提示:如果只是向往,远方依旧还是远方!

文章目录

  • 引言
  • 前言
  • 一、代码生成器能干嘛?
  • 二、如何创建代码生成器项目呢?
    • 1.创建一个.net Core的控制台项目
      • 创建完成后我们就得到了以下画面
    • 2.创建代码生成器
      • 给代码生成器命名
      • 创建代码生成类
      • 引入需要的包
      • 配置包
    • 三、在引入项目
      • 配置项目引用
  • 总结


前言

温馨提示:以下内容纯属瞎编

鲁迅说过:成熟的平台就要学会自己写代码

孩子你还在每天写着重复的代码吗?还在做着重复的增删改查吗?out啦,今天不要998!不要888!免费白嫖带回家。


友情提示:以下是本篇文章正文内容,下面案例可供参考

一、代码生成器能干嘛?

1、减少工作量,提高工作效率
2、可以把开发周期缩短,把省出来的时间拿来摸鱼它不香吗?
3、可以在菜鸟面前装逼。

二、如何创建代码生成器项目呢?

1.创建一个.net Core的控制台项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:这里是用的.Net 6.0

创建完成后我们就得到了以下画面

在这里插入图片描述

把下面这断代码复制进去:

namespace Test;
//注意这里的Program是用的部分类。这是为了使生成代码和这里的代码进行合并
partial class Program
{static void Main(string[] args){HelloFrom("Generated Code");}static partial void HelloFrom(string name);
}

2.创建代码生成器

在这里插入图片描述
在这里插入图片描述
注意:这里选择的是 .NET Standard 的类库

给代码生成器命名

这里我是随便写的名字,在实际开发中肯定不能这样写
在这里插入图片描述
在这里插入图片描述
注意:目前代码生成器只支持 .NET Standard 2.0 ,如果选错了将会不支持该服务

创建代码生成类

在这里插入图片描述

然后将下面的代码复制进去:

using Microsoft.CodeAnalysis;namespace SourceGenerator
{[Generator]public class HelloSourceGenerator : ISourceGenerator{//在进行代码分析的时候会执行这里的代码public void Execute(GeneratorExecutionContext context){//代码生成执行此方法// 找到主方法,拿到编译环境var mainMethod = context.Compilation.GetEntryPoint(context.CancellationToken);// 建立源代码//mainMethod.ContainingNamespace.ToDisplayString()会取到main方法的命名空间也就是test//mainMethod.ContainingType.Name会取到main方法所在的类名称也就是program//注意下面代码种的partial,这里用的是部分类string source = $@"// <auto-generated/>
using System;namespace {mainMethod.ContainingNamespace.ToDisplayString()}
{{public static partial class {mainMethod.ContainingType.Name}{{static partial void HelloFrom(string name) =>Console.WriteLine($""Generator says: Hi from '{{name}}'"");}}
}}
";var typeName = mainMethod.ContainingType.Name;// 添加源代码进行编译context.AddSource($"{typeName}.g.cs", source);}//初始化时执行此段代码public void Initialize(GeneratorInitializationContext context){// No initialization required for this one}}
}

引入需要的包

Microsoft.CodeAnalysis.Analyzers 和 Microsoft.CodeAnalysis.CSharp

在这里插入图片描述

配置包

在这里插入图片描述

代码如下

<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><TargetFramework>netstandard2.0</TargetFramework></PropertyGroup><ItemGroup><PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="3.3.3"><PrivateAssets>all</PrivateAssets><IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets></PackageReference><PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.0.1" PrivateAssets="all" /></ItemGroup></Project>

三、在引入项目

在这里插入图片描述

配置项目引用

在这里插入图片描述

代码如下

<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><OutputType>Exe</OutputType><TargetFramework>net6.0</TargetFramework><ImplicitUsings>enable</ImplicitUsings><Nullable>enable</Nullable></PropertyGroup><ItemGroup><PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="3.3.3"><PrivateAssets>all</PrivateAssets><IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets></PackageReference><PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.2.0" /></ItemGroup><ItemGroup><ProjectReference Include="..\PathTo\PathTo.csproj"  OutputItemType="Analyzer"ReferenceOutputAssembly="false" /></ItemGroup></Project>

到这里差不错就结束了
直接把项目跑起来就能看到项目生成的代码了
在这里插入图片描述
这里的 Program就是代码生成器操作后的代码


总结

提示:这里对文章进行总结:

这里只是展示了基本的用法,运营场景很多。需要只要合理的运用就能给你带来极大的收获。让你拥有更多的摸鱼时间


http://chatgpt.dhexx.cn/article/3elAPgQA.shtml

相关文章

MybatisPlus代码生成器

代码生成器 问题导入 如果只给一张表的字段信息&#xff0c;能够推演出Domain、Dao层的代码&#xff1f; 1. MyBatisPlus提供模板 Mapper接口模板 实体对象类模板 2. 工程搭建和基本代码编写 第一步&#xff1a;创建SpringBoot工程&#xff0c;添加代码生成器相关依赖&…

python 代码生成器_Python代码生成器(代码生成工具)V1.1 正式版

Python代码生成器(代码生成工具)是一款很优秀好用的为新手制作的代码生成助手。小编带来的这款Python代码生成器功能强大&#xff0c;操作简单&#xff0c;使用后可以帮助用户更轻松便捷的生成Python代码&#xff0c;非常方便实用。其内置了大量的示例代码&#xff0c;可以帮助…

12款AI代码生成工具,都很能打

1.Anania Anania 是一个机器人数据分析师&#xff0c;可以通过简单、自然的英语对话来分析您的数据。连接数据源并以简单的英语提问&#xff0c;无需任何设置或配置。在幕后&#xff0c;Anania 正在使用一个 AI 系统&#xff0c;该系统将文本转换为 SQL 和 Python 代码并执行您…

3D相册动态桌面制作

3D相册动态桌面制作 1.下载3D相册代码链接&#xff1a;https://pan.baidu.com/s/1Z_br3XKGsW3vsISvSCteJA&#xff0c;提取码&#xff1a;8888 更换自己喜欢的图片 注意第三张和第四章相册右键旋转照片 直接双击运行index.html可以在浏览器中看到效果。 如果不是很喜欢 可以自行…

HTML+CSS+JavaScript七夕情人节表白网页【樱花雨3D相册】超好看

这是程序员表白系列中的100款网站表白之一&#xff0c;旨在让任何人都能使用并创建自己的表白网站给心爱的人看。 此波共有100个表白网站&#xff0c;可以任意修改和使用&#xff0c;很多人会希望向心爱的男孩女孩告白&#xff0c;生性腼腆的人即使那个TA站在眼前都不敢向前表白…

制作简易的3D相册

今天介绍一下3D相册&#xff0c;用到了开源的FeatureCoverFlow控件&#xff0c;之前的几个作品用的也全都是开源的控件&#xff0c;为什么要用开源的控件呢&#xff0c;因为...他稳定啊&#xff01; 1.准备 仍然是&#xff0c;去掉标题栏&#xff0c;然后导库&#xff1a; impl…

HTML5、css3、js实现3D相册

目录 想法 实现 一、基础知识 1.3D转换 transform-style: preserve-3d; ①简述 ②使用 ③3D转换方法 2.onmouseover 事件 ①解释 ②具体语法 3.onmouseout事件 ①解释 ②具体语法 **本例通过在div的class中设置相同的类名&#xff0c;然后在js方法中通过document…

前端CSS3实现3D相册小案例

前端CSS3实现3D相册小案例 HTML代码部分&#xff1a; <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title>3D相册</title> <link type"text/css" href"css/style.css&qu…

制作一个简单3D相册

- 用到的点&#xff1a; 旋转 2D 旋转 transform: rotate(值deg) deg 角度的单位 3D 旋转 transform:rotateX rotateY roteteZ 如果让一个块实现3D效果&#xff0c;必须做两件事&#xff1a; 1、在要实现3D效果的块上 加transform-style:preserve-3D (声明) 2、在要实现3D效…

html结合css实现浏览器展示3D相册

最近写了一个在浏览器展示3D相册效果&#xff0c;通过html文件结合css实现。 1.html详细代码如下&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>3D相册</title> <script src"../js/jquer…

python3d相册源代码_js和CSS3炫酷3D相册展示

js和CSS3炫酷3D相册展示 *{margin:0;padding:0;} body{background:url(img/bg.jpg);width:100%;height:100%;overflow:hidden;}; h1{width:277;height:76px;margin:30px auto 0;} .xc-3D{width:100%;height:300px;background:#fff;margin-top:100px;position:relative;transfor…

three.js 制作3D相册

效果图&#xff1a; 由于博客限制了图片大小&#xff0c;动画质量不太好&#xff0c; 在线效果&#xff1a; https://static-mp-df787464-d77c-4180-83c3-6e7add40073e.next.bspapp.com/ 参考了three.js 官方代码 <!-- 源码下载地址 https://pan.baidu.com/s/1AVB71Aj…

3d相册

页面脚本 我的图片是是本地的&#xff0c;大家可以放上自己喜爱的图片 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>3d相册</title></head><style>#box1 {/* 宽 */width: 300px;/* 高 */height: …

HTML实现3D相册

今天&#xff0c;我给大家分享一个3D相册的代码 废话不说先上效果图&#xff1a; 先新建两个文件夹&#xff0c;一个叫css&#xff0c;另一个叫img&#xff0c;如下图&#xff1a; 先新建一个文本文档&#xff0c;输入下面的代码&#xff1a; <!DOCTYPE html> <html…

教你零基础制作3D旋转相册(送给那个她~)

3D立体相册&#xff1f;   是的&#xff0c;相信大家或多或少的会在一些地方看到某些程序员用代码给自己女朋友写3D立体相册&#xff0c;那么你会不会也想自己手动敲出那些炫酷的代码呢&#xff1f;   那你是找对地方了。废话不多说&#xff0c;今天为大家分享利用html实现…

【3D相册】零基础完成3D相册并配上背景音乐

文章目录 一、前言二、准备工作1、新建文件夹2、准备素材对于图片的处理对于音乐的处理 三、代码工作1、python处理6张图片1.1代码运行1.2 放入背景图片 2、写html文件2.1 更换音乐素材 3、运行main.html 四、推荐阅读 一、前言 帮助好哥们整的一个小相册&#xff0c;给他写个…

斐波那契数列求和公式

斐波那契数列指的是这样一个数列&#xff1a;1、1、2、3、5、8、13、21、……    这个数列从第三项开始&#xff0c;每一项都等于前两项之和。它的通项公式为:(见下图)&#xff08;又叫“比内公式”&#xff0c;是用无理数表示有理数的一个范例。&#xff09; 斐波那契数列求…

斐波那契数列之python(5种方法)

斐波那契数列&#xff08;Fibonacci sequence&#xff09;&#xff0c;又称黄金分割数列、因数学家列昂纳多斐波那契&#xff08;Leonardoda Fibonacci&#xff09;以兔子繁殖为例子而引入&#xff0c;故又称为“兔子数列”&#xff0c;指的是这样一个数列&#xff1a;1、1、2、…

斐波那契数列(C/C++)

目录 背景介绍 解法1&#xff1a;非数组非递归 解法2&#xff1a;数组非递归 解法3&#xff1a;非数组递归 解法4&#xff1a;数组递归 背景介绍 斐波那契数列&#xff0c;又称黄金分割数列&#xff0c;指的是这样一个数列&#xff1a;0、1、1、2、3、5、8、13、21、34、…

关于斐波那契数列通项公式证明以及推广

在我们中学的时候老师都会举一个著名的兔子繁殖的例子&#xff1a;一般而言&#xff0c;兔子在出生两个月后&#xff0c;就有繁殖能力&#xff0c;一对兔子每个月能生出一对小兔子来。如果所有兔子都不死&#xff0c;那么一年以后可以繁殖多少对兔子&#xff1f;而这个问题就是…