dll动态链接库

Visual C#生成DLL文件——预备知识 

DLL(Dynamic Link Library)文件即动态链接库文件,是一种可执行文件,允许程序共享执行特殊任务所必需的代码和其他资源。多数情况下带有dll扩展名(也可以 是.ocx文件:ActiveX控件文件,.cpl文件:控制面板文件,.drv文件:设备驱动程序文件等),向运行于Windows操作系统下的程序提 供代码、数据或函数。

使用DLL的一些好处:

使用较少的资源;

推广模块式体系结构;

简化部署和安装。      

DLL不是独立运行的程序,是某个程序的一个部分,只能由所属的程序调用,用户不能也不需要打开它。 

Visual C#生成DLL文件   

VisualC、Delphi或者VB等编程语言来编写的DLL文件,在编译完成以后,产生DLL文件已经是一个可以直接供计算机使用的二进制文 件。但用Visual C#编译器生成的受管代码虽然也是二进制文件,但不是可以直接供计算机使用的原始代码,实质上是一种中间语言(IL)代码,需要经过"下一代窗口服务"( Next Generation Windows Services,简写为NGWS ) runtime的即时编译器(即JIT)进行编译。

用Visual C#生成的DLL文件已经和以前的DLL文件有了本质上的区别。用Visual C#生成的DLL文件在程序设计中更多的表现为一种类(Class)或者类库(Class Library)。 

Visual C#生成DLL文件——制作一个组件

1.首先创建一个新类库工程文件

File->New->Project->Visual C# Projects->Class Library。填入工程文件名称,并且选择文件要存放的目录。

2.工程文件

将Class1.cs改名自己要创建的文件名:myDll.cs,并填入代码。

3.生成DLL文件

编译工程文件:csc /target:library /out:myDll.DLL myDll.cs生成组件myDll.dll,该组件会在工程文件的bin\debug目录里,文件扩展名是dll。

Visual C#生成DLL文件——测试DLL

1.新建一个控制应用程序

File->New->Project->Visual C# Projects->Console Application。通过这个控制应用程序来测试我们的组件。

2. 为Namespace添加引用

Project->Add reference,浏览到刚才生成的DLL,然后按OK。即将引用加到当前的工程文件的类里。

3.调用myDll命名空间,创建myDll对象,并且调用它的方法和属性

(1)使用namespace:using myDll;

(2)创建myDll对象;

(3)调用方法和属性。

 

使用csc命令将.cs文件编译成.dll的过程

很多时候,我们需要将.cs文件单独编译成.dll文件, 操作如下:

打开命令窗口->输入cmd到控制台->cd C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322

转到vs.net安装的该目录下->执行csc命令csc /target:library File.cs->在该目录下产生一个对应名字的.dll文件(前提:把.cs文件放到C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322目录下)

 csc命令的方式很多,请参考以下

译 File.cs 以产生 File.exe

csc File.cs 编译 File.cs 以产生 File.dll

csc /target:library File.cs 编译 File.cs 并创建 My.exe

csc /out:My.exe File.cs 通过使用优化和定义 DEBUG 符号,编译当前目录中所有的 C# 文件。输出为 File2.exe

 csc /define:DEBUG /optimize /out:File2.exe *.cs 编译当前目录中所有的 C# 文件,以产生 File2.dll 的调试版本。不显示任何徽标和警告

 csc /target:library /out:File2.dll /warn:0 /nologo /debug *.cs 将当前目录中所有的 C# 文件编译为 Something.xyz(一个 DLL)

 csc /target:library /out:Something.xyz *.cs 编译 File.cs 以产生 File.dll

 csc /target:library File.cs这个就是我们使用最多的一个命令,其实可以简单的写成csc /t:library File.cs,另外的一个写法是 csc /out:mycodebehind.dll /t:library mycodebehind.cs,这个可以自己指定输出的文件名。

csc /out:mycodebehind.dll /t:library mycodebehind.cs mycodebehind2.cs,这个的作用是把两个cs文件装到一个.dll文件里


转载于:https://www.cnblogs.com/9421/archive/2010/01/06/1640625.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/463186.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# OLE DB 的连接方式下 对 sql 参数的操作 需要改成 ? 号

C# OLE DB 的连接方式下 对 sql 参数的操作 需要改成 ? 号

ELF文件格式

ELF文件格式 ELF文件(Executable Linkable Format)是一种文件存储格式。Linux下的目标文件和可执行文件都按照该格式进行存储,有必要做个总结。 概要 本文主要记录总结32位的Intel x86平台下的ELF文件结构。ELF文件以Section的形式进行存储…

TCP协议的三次握手与四次挥手

tcp协议的三次握手和四次挥手 三次握手: 第一次握手: 客户端发起一个链接(SYN) 第二次握手: 服务端就会返回一条(ACK)确认信息,同时服务端也会向客户端发起一个链接请求(…

晚上美容护肤10要诀 - 健康程序员,至尚生活!

夜晚美容护肤十要诀  如何护肤,我想谁也知道晚上是给予皮肤滋养的最佳时期,别以为早晚搽日霜、晚霜就能够令你的皮肤变得白雪雪、滑嘟嘟,其实这只是表面的滋润。要彻底护理,就要依赖你睡前的准备功夫,才能使肌肤得到…

明白了为什么java方法上面为什么要加个@符号

原来是java的特性“注解(Annotation)” 注解(Annotation) 为我们在代码中天界信息提供了一种形式化的方法,是我们可以在稍后某个时刻方便地使用这些数据(通过 解析注解 来使用这些数据) 注解的语…

PG内核分析 QA

今天查找postgreSQL相关的资料时,查找到该文章,觉得写得比较好 https://www.cnblogs.com/liuhaifeng/p/12184902.html

STM32的PA15、PB3、 PB4管脚作普通管脚的解决办法

最近做了一个板子,使用的是SWD方式进行下载程序,仅仅使用到SWDIO(PA13) 和SWCLK(PA14)两个管脚。我将PA15(JTDI)和PB3(JTDO)管脚用于他用(用于点L…

Google不要走

这两天Google离开中国的新闻不断,如果他真的要离开,我会觉得非常遗憾。我想他已经是大部分程序员的精神领袖,技术牛人的代表,现在居然会被逼走?? 与百度的搜索相比,Google也有广告,但…

AIX errdemon 命令

errdemon 进程持续检查 /dev/error 文件,收集error信息。 命令格式: Usage: errdemon -i filename -s value -B value [ -d | -D -m maxdups -t time ] | -l -i filename Uses the error log file specified by the filename parameter. If this f…

C#集合。

集合命名空间&#xff1a; using system.collections. 非泛型集合 using system.collections.Generic. 泛型集合 为什么要用集合&#xff1a; 1、数组一旦声明长度就固定了。 2、集合有很多方法可以用 等 常用集合&#xff1a; 类似数组集合&#xff1a;ArrayList List<&g…

对std::listT的封装

由于工作的原因&#xff0c;需要在线程安全的情况下对std::list<T>进行该list进行访问&#xff0c;因此就简单的封装了下&#xff0c;代码如下&#xff1a; template<typename T> class List { public:List () {}~List () {}void PushBack(const T& value) {b…

code

// 控制字体系列。"editor.fontFamily": "Droid Sans Mono, monospace, monospace, Droid Sans Fallback",// 覆盖当前所选颜色主题中的编辑器颜色和字体样式。"editor.tokenColorCustomizations": {},// 控制差异编辑器是否将对前导空格或尾随空…

SWISHMAX2脚本整理及Swishmax使用技巧

wish Max让你更快速更简单地在你的网页中加入Flash动画,超过230种可选择的预设效果.SWiSH是一个快速、简单且经济的方案,让你可以在你的网页 中加入Flash动画.只要点几下鼠标,你就可以加入让你的网页在众多网站中令人注目的酷炫动画效果.你可以创造形状、文字、按钮以及移动路径…

MAC机路由管理

On the Mac the command is similar, but a bit different Just as a note to myself and anyone else interested:add network:1sudo route add -net 10.67.0.0/16 192.168.120.254Add hostsudo route add -host 10.67.0.0/16 192.168.120.254转载于:https://blog.51cto.com…

Redis的持久化机制

Redis 的数据全部在内存里&#xff0c;如果突然宕机&#xff0c;数据就会全部丢失&#xff0c;因此必须有一种机制来保证 Redis 的数据不会因为故障而丢失&#xff0c;这种机制就是 Redis 的持久化机制。 Redis 的持久化机制有两种&#xff0c;第一种是RDB快照&#xff0c;第二…

今天用python的turtle简单画了一副眼镜

画的不太好看&#xff0c;下次要继续努力鸭!!! 这个是代码~ 1 from turtle import*2 pencolor("blue")3 fillcolor("white")4 setup(500,1000,100,10)5 speed(2)6 pensize(4)7 begin_fill()8 circle(40,450)9 goto(70,40) 10 circle(-40,360) 11 penup() 1…

怎么样能找到国外的群?

怎么样能找到国外的群和老外聊天,学习呢&#xff1f;给你条途径。 先申请个MSN&#xff0c;作为固定的聊天基地。 在去WWW.OICQ.COM。 这是个外国的聊天网址&#xff0c;去那边的聊天室&#xff08;临时聊天基地&#xff0c;用来找新网友&#xff09;聊天。若是有个谈的来的&am…

redis RDB持久化中save和bgsave区别

SAVE 和 BGSAVE 两个命令都会调用 rdbSave 函数&#xff0c;但它们调用的方式各有不同&#xff1a; SAVE 直接调用 rdbSave &#xff0c;阻塞 Redis 主进程&#xff0c;直到保存完成为止。在主进程阻塞期间&#xff0c;服务器不能处理客户端的任何请求。BGSAVE 则 fork 出一个…

OA系统

employee对象为空&#xff0c;所以mybatis无法获取employeeId的值 getProperty(null, "employeeId") null是employee对象&#xff0c;employeeId是employee对象的属性 Struts Problem Report Struts has detected an unhandled exception: Messages: source is null …

合并所有文档

合并所有文档type *.txt >index.txt #将所有.txt文件内容合并到index.txt文件中 转载于:https://www.cnblogs.com/juan-F/p/10532455.html