当前位置: 首页 > news >正文

【07】C#入门到精通——C# 生成dll库 C#添加现有DLL C#调用自己生成的dll库

文章目录

  • 0 多个.cs文件源码
    • 01 Hero.cs
    • 02 ShowInfo.cs
    • 03 Program.cs (相当于Main文件)
    • 04 运行效果
  • 1 生成dll库
    • 1.1 创建类库
    • 1.2 添加要生成 dll库 的代码文件
      • 1.2.1 添加 Hero类
      • 1.2.2 添加 ShowInfo类
    • 1.3 生成dll库 及 查看
  • 3 添加自己生成的dll库
  • 4 调用运行
  • 5 常见问题
    • 5.1 类库里里面的类不可访问
    • 5.2 ClassLibrary2 类库下面用不到的可以删掉
  • 6 项目文件下载

0 多个.cs文件源码是一个模拟 游戏英雄角色信息的 程序,
现在想将多个 .cs文件,生成类库文件,然后在main文件中引用库文件;

0 多个.cs文件源码

01 Hero.cs

using System;namespace test1
{class Hero{//成员变量public string name;public string xingbie;public int nianling;public int shanghai;public int xueliang;public int shengao;public string jineng1;public int jineng1shanghai;public string jineng2;public int jineng2shanghai;}
}

02 ShowInfo.cs

using System;namespace test1
{class ShowInfo{//将Hero类,作为参数传给 ShowInfo类的成员函数,以便于打印信息,public static void ShowHeroInfo(Hero hero){Console.WriteLine("性别: " + hero.xingbie);Console.WriteLine("年龄: " + hero.nianling);Console.WriteLine("基础伤害: " + hero.shanghai);Console.WriteLine("基础血量: " + hero.xueliang);Console.WriteLine("身高:" + hero.shengao);Console.WriteLine("技能1:" + hero.jineng1);Console.WriteLine("技能1伤害: " + hero.jineng1shanghai);Console.WriteLine("技能2:" + hero.jineng2);Console.WriteLine("技能2伤害: " + hero.jineng2shanghai);}}
}

03 Program.cs (相当于Main文件)

using System;
//using test1;
//类型
//关键字namespace test1
{class Program{static void Main(){Console.WriteLine("月黑风高杀人夜");Console.WriteLine("(请按任意键继续。。。)");Console.ReadKey();Console.WriteLine("微风吹动着路边的小草");Console.WriteLine("(请按任意键继续。。。)");Console.ReadKey();////----------英雄一---------------------/////Console.WriteLine("隐约在路的尽头有一个人影");Console.WriteLine("(请按任意键继续。。。)");Console.ReadKey();Console.WriteLine("走近一看,这人叫");//实例化Hero hr1 = new Hero();hr1.name = Console.ReadLine();Console.WriteLine("原来你就是" + hr1.name);Console.WriteLine("(请按任意键继续。。。)");Console.ReadKey();hr1.xingbie = "男";hr1.nianling = 18;hr1.shanghai = 100;hr1.xueliang = 100;hr1.shengao = 175;hr1.jineng1 = "飞檐走壁";hr1.jineng1shanghai = 20;hr1.jineng2 = "飞沙走右";hr1.jineng2shanghai = 30;//打印英雄信息ShowInfo.ShowHeroInfo(hr1);Console.ReadKey();////----------英雄二---------------------/////Console.WriteLine("此时远处传来一个女人的声音");Console.WriteLine("(请按任意键继续。。。)");Console.ReadKey();Console.WriteLine("走进一看原来是: ");Console.WriteLine("(请按任意键继续。。。)");Console.ReadKey();Console.WriteLine("请输入女侠的名称: ");//实例化Hero hr2 = new Hero();hr2.name = Console.ReadLine();Console.WriteLine("原来你就是" + hr2.name);Console.WriteLine("(请按任意键继续。。。)");Console.ReadKey();hr2.xingbie = "女";hr2.nianling = 18;hr2.shanghai = 100;hr2.xueliang = 100;hr2.shengao = 165;hr2.jineng1 = "飞檐走壁2.0";hr2.jineng1shanghai = 40;hr2.jineng2 = "飞沙走右2.0";hr2.jineng2shanghai = 60;//打印英雄信息ShowInfo.ShowHeroInfo(hr2);Console.ReadKey();}}}

04 运行效果

在这里插入图片描述

1 生成dll库

1.1 创建类库

C#添加现有DLL(C#编写的DLL)

在解决方案"test1",右键添加新项目->搜索 类库,找到 类库(.NET Frammework)->下一步,就可以创建类库项目了

在这里插入图片描述

在这里插入图片描述
默认名 ClassLibrary2
在这里插入图片描述

创建好了如下
在这里插入图片描述
在这里插入图片描述

1.2 添加要生成 dll库 的代码文件

1.2.1 添加 Hero类

ClassLibrary2 右键->添加->类
在这里插入图片描述
在这里插入图片描述
①将Hero 的类文件代码复制过来,放在 namespace ClassLibrary2命名空间内;
②class Hero 前面添加,公共访问权限public ,否则无法调用

在这里插入图片描述

1.2.2 添加 ShowInfo类

同样的方法添加 ShowInfo类

在这里插入图片描述

1.3 生成dll库 及 查看

ClassLibrary2右键->生成,即可生成 DLL 库
在这里插入图片描述
生成的 ClassLibrary2.dll文件查看:

右键ClassLibrary2 ->在文件资源管理中打开文件夹->弹出项目路径文件->打开子目录\bin\Debug
就可以看到ClassLibrary2.dll
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3 添加自己生成的dll库

再要添加 dll库 的项目下面找到 引用->添加引用(R)
在这里插入图片描述

方法一:
->在弹出的页面->浏览 找到要添加的DLL库文件
在这里插入图片描述
在这里插入图片描述

方法二:
->在弹出的页面->项目 解决方案->可以看到刚才 生成类库的项目 勾选上即可

在这里插入图片描述

添加完成过后 ,可以在 test1的引用下面看到 ClassLibrary2文件
在这里插入图片描述

4 调用运行

此时,test1项目下面已经引用 Hero,Showinfo 类库了,
那我么我们删除,test1项目下面的 Hero,Showinfo源文件

在这里插入图片描述
删除之后
在这里插入图片描述

在Program.cs文件,引用类库文件 using ClassLibrary2;

在这里插入图片描述
注意引用类库文件一定与 命名空间一致
在这里插入图片描述
运行测试

在这里插入图片描述

5 常见问题

5.1 类库里里面的类不可访问

Hero 和 ShowInfo 类 都不可访问,
在这里插入图片描述
在这里插入图片描述

虽然 Hero 和 ShowInfo 的成员变量是 public 访问权限,
但 Hero 和 ShowInfo 类没有 明确给出访问权限,那么默认 私有属性;所以,生成的DLL库,不可访问;

class Heroclass ShowInfo 前面加上 public 权限,如下所示;就OK啦;
在这里插入图片描述
在这里插入图片描述
修改好之后,右键ClassLibrary2 ->重新生成
在这里插入图片描述

5.2 ClassLibrary2 类库下面用不到的可以删掉

在 ClassLibrary2 类库下面添加项目时自动生成的 Class1.cs文件,没有使用,可以删掉,不影响使用;
在这里插入图片描述

6 项目文件下载

test1项目文件下载

http://www.lryc.cn/news/600022.html

相关文章:

  • Typecho多语言解决方案:从插件到主题的完整实现
  • CANoe入门(11)-- 诊断模块
  • SpringBoot学习路径--SpringBoot的简单介绍和项目搭建
  • c++注意点(13)----设计模式(抽象工厂)
  • 医疗器械:DFEMA和PFEMA
  • 从数据脱敏到SHAP解释:用Streamlit+XGBoost构建可复现的川崎病诊断系统
  • [NLP]一个完整的 UPF 文件示例
  • 文心4.5横向对标全球大模型:技术突破与应用前景深度分析
  • OSPF 路由协议多区域
  • 利用Dify实现应用日志关键信息提取之实践
  • 九联UNT413AS_晶晨S905L3S芯片_2+8G_安卓9.0_线刷固件包
  • RK3588 HDMI-RX 驱动、RGA 加速与 OpenCV GStreamer 支持完整指南
  • React性能优化终极指南:memo、useCallback、useMemo全解析
  • 堆(Heap)优先级队列(Priority Queue)
  • python基础:request模块简介与安装、基本使用,如何发送get请求响应数据,response属性与请求头
  • 《计算机组成原理与汇编语言程序设计》实验报告一 基本数字逻辑及汉字显示
  • 机器学习详解(28):LightGBM原理
  • Linux系统编程——进程
  • 腾讯云CodeBuddy+微信小程序:5分钟开发番茄小闹钟
  • IPv6,你开始使用了吗?
  • 学习日志18 python
  • 从入门到进阶:JavaScript 学习之路与实战技巧
  • [科普] 快速傅里叶变换(FFT)和离散傅里叶变换(DFT)的差异
  • JDK8保姆级安装教程
  • 微观低代码
  • 前端项目组成
  • 【DeepRare】疾病识别召回率100%
  • Linux parted问题:指定分区边界失效
  • HTTP响应状态码详解
  • Java 常用数据库详解