【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 Hero
和 class ShowInfo
前面加上 public 权限,如下所示;就OK啦;
修改好之后,右键ClassLibrary2 ->重新生成
5.2 ClassLibrary2 类库下面用不到的可以删掉
在 ClassLibrary2 类库下面添加项目时自动生成的 Class1.cs文件
,没有使用,可以删掉,不影响使用;
6 项目文件下载
test1项目文件下载