a.打开visualstudio-文件-新建-项目-类库-名称MyTestDll;
b.右键Class1.cs-修改为TestDll.cs
c.在让备里面写一个自己想 *** 作的函数
d.保存-生成解决方案;
e.这是你的Debug文件夹下就会有一个MyTestDll.dll文件,你就可以把它放在你想引用的工程。
DLL是Dynamic Link Library的缩写,意为动态链接库。在Windows中,许多应用程序并不是一个完整的可模滑亩执行文件,它们被分割成一些相旦森对独立的动态链接库,即DLL文件,放置于系统中。
使用C#生成dll文件并调用一、创建dll文件:
例如生成一个md5编码判断状态的文件,即,输入一个字租戚符串(string A)和一个32位md5编码(string B),判断此字符串A对应的32位md5编码是否与B相等,如果相等返回true,否则返回false。
打开VS 2005,“文件”--》“新建”--“项目”,选择“Windows 控件库”,命名后点击“确定”,在“UserControl1.cs”中输入以下代码:
using System
using System.Collections.Generic
using System.ComponentModel
using System.Drawing
using System.Data
using System.Windows.Forms
using System.Text
using System.Security.Cryptography
namespace md5
{
public partial class Program : UserControl
{
#region MD5 32位加密:GetMd5Str32
/// <summary>
/// 32位MD5加密
/// </summary>
/// <裂型核param name="strSource">待加密字串</param>
/// <returns>加密后的字串</returns>
public static string GetMd5Str32(string strSource)
{
byte[] bytes = Encoding.ASCII.GetBytes(strSource)
byte[] hashValue = ((System.Security.Cryptography.HashAlgorithm)System.Security.Cryptography.CryptoConfig.CreateFromName("MD5")).ComputeHash(bytes)
StringBuilder sb = new StringBuilder()
for (int i = 0i <16i++)
{
sb.Append(hashValue[i].ToString("x2"))
}
return sb.ToString().ToUpper()
}
#endregion
#region 核对md5编码是否一致:CheckMd5String()
/// <summary>
/// 核对md5编码是否一致
/// </summary>
/// <param name="ConvertString"></param>
/肆掘// <returns>如果一致返回true,否则返回false</returns>
///
public static bool CheckMd5String(string str1, string str2)
{
string md5String = str1//需要验证的字符串
string md5DbString = str2//需要核对的32位md5编码
int result = string.Compare(md5.Program.GetMd5Str32(str1), md5DbString, true)
if (result == 0)
{
return true
}
else
{
return false
}
}
#endregion
}
}
修改“UserControl1.Designer.cs”中的命名空间为“md5”,方法为“Program”,即可生成dll文件。
在...\bin\Debug文件假下,可以找到相应的dll文件。
二、部署dll流程:
首先把dll文件放到应用程序...\bin\Debug\下;
然后在解决方案中添加引用:右键鼠标-->添加引用-->浏览-->选择dll放置路径后点击“确定”。
注意:要在应用文件头处使用using md5;命令。
测试应用程序代码,如下:Form1.cs
using System
using System.Collections.Generic
using System.ComponentModel
using System.Data
using System.Drawing
using System.Text
using System.Windows.Forms
using md5
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent()
}
private void button1_Click(object sender, EventArgs e)
{
string str1 = textBox1.Text.ToString()
string md5String = textBox2.Text.ToString()
textBox3.Text = md5.Program.GetMd5Str32(str1)
textBox4.Text = md5.Program.CheckMd5String(str1, md5String).ToString()
}
private void button2_Click(object sender, EventArgs e)
{
this.Close()
}
}
}
(1)、ILMerge。这个工具是MS官方提供的,在 http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=17630 可以下载橡信得到。这个工具能够把几信如虚个可执行文件(exe或者dll)打包集成进一个可执行文件中,具体使用方法网上很多,这里不再赘述。值得说明的是,我尝试写了一个.bat批处理来merge,效果非常好。利用pause指令还能随时暂停ILMerge运行过程,可以看到merge失败时是哪里的问题。
(2)、嵌入DLL作为资源。
推荐使用这种方式。这个方法是CLR via C#的作者发明滑燃的(貌似,反正我是从他那里学的),原帖的地址http://blogs.msdn.com/b/microsoft_press/archive/2010/02/03/jeffrey-richter-excerpt-2-from-clr-via-c-third-edition.aspx
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)