C# 把窗体应用改成类库输出然后去引用
类库你就新建类库文件直接生成dll去引用好了,但是群友非要骚操作,新建一个windows窗体把他搞成dll去引用,当时我回答了这个问题是可以的,但是实际上我没有这么干过,今天恰好有空,体验了一把,的确可以。
首先说明哈,因为这只是测试这么个功能,我新建的项目名字以及窗体名字都没改,偷懒了哈,网友勿喷!
先新建第一个窗体应用,
代码如下;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | using Microsoft.CSharp; using System; using System.CodeDom.Compiler; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApp12 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load( object sender, EventArgs e) { } private void button1_Click( object sender, EventArgs e) { MessageBox.Show(GetCode2()); } public static string GetCode2() { StringBuilder sb = new StringBuilder(); sb.Append( "using System;" ); sb.Append(Environment.NewLine); sb.Append( "namespace DynamicCodeGenerate" ); sb.Append(Environment.NewLine); sb.Append( "{" ); sb.Append(Environment.NewLine); sb.Append( " public class HelloWorld" ); sb.Append(Environment.NewLine); sb.Append( " {" ); sb.Append(Environment.NewLine); sb.Append( " public string OutPut()" ); sb.Append(Environment.NewLine); sb.Append( " {" ); sb.Append(Environment.NewLine); sb.Append( " return \"Hello world!\";" ); sb.Append(Environment.NewLine); sb.Append( " }" ); sb.Append(Environment.NewLine); sb.Append( " }" ); sb.Append(Environment.NewLine); sb.Append( "}" ); string code = sb.ToString(); return code; } } } |
点击按钮运行后结果如下:
然后我把它的输出类型改为类库:
然后去新建第二个窗体应用,然后引用上面的项目
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using WindowsFormsApp12; namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click( object sender, EventArgs e) { //WindowsFormsApp12.Form1 f1 = new WindowsFormsApp12.Form1(); MessageBox.Show( WindowsFormsApp12.Form1.GetCode2()); } } } |
执行后:
源码:
链接: https://pan.baidu.com/s/1uWegVTHc2guz7FaQ5j8WIA
提取码: g7fp
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?