首页 > 代码库 > 调用内嵌Dll框架的一个例子

调用内嵌Dll框架的一个例子

       也许有的朋友工作多年,积累了很多的开发经验,形成了自己的一套框架,但是又不想公开给用户,于是封装成Dll后,混淆了,加密了(没有打乱命名空间和类名、方法名),把框架DLL内嵌进资源里面,可以正常引用、调用.........

      废话少说,如下:

      首先封装一个Dll,ClassLibrary1.dll

namespace ClassLibrary1{    public class Test    {        public static string Say()        {            return "11111";        }    }}

然后把这个Dll放到项目里,设置为内嵌
技术分享

然后引用这个DLL技术分享

 

然后新建一个页面,调用这个方法

using System;namespace WebApplication1{    public partial class WebForm1 : System.Web.UI.Page    {        protected void Page_Load(object sender, EventArgs e)        {                       Response.Write(ClassLibrary1.Test.Say());        }    }}

现在,需要在程序启动的时候就要加载这个程序集,读取资源释放Dll出来,程序启动就释放,用完就删除,用到了全局Global

Application_Start

Application_End

 

 protected void Application_Start(object sender, EventArgs e)        {            LoadDll("WebApplication1.ClassLibrary1.dll", "bin/ClassLibrary1.dll");        }public static void LoadDll(string dllFullName, string filePath)        {            try            {                // 尝试读取资源中的 DLL                 Stream sm = Assembly.GetExecutingAssembly().GetManifestResourceStream(dllFullName);                byte[] bs = new byte[sm.Length];                sm.Read(bs, 0, (int)sm.Length);                sm.Close();                //================================================================================================================                if (sm == null && !File.Exists(HttpContext.Current.Server.MapPath(filePath)))//资源及硬盘都不存在这个Dll                {                    throw (new Exception(" 找不到文件 :" + Path.GetFileName(HttpContext.Current.Server.MapPath(filePath))));                }                else if (File.Exists(HttpContext.Current.Server.MapPath(filePath)))                {                    return;                }                FileStream fs2 = new FileStream(HttpContext.Current.Server.MapPath(filePath), FileMode.Create, System.IO.FileAccess.Write);                fs2.Write(bs, 0, bs.Length);                fs2.Close();            }            catch { return; }        } protected void Application_End(object sender, EventArgs e)        {           if(File.Exists(HttpContext.Current.Server.MapPath("bin/ClassLibrary1.dll")))           {               File.Delete(HttpContext.Current.Server.MapPath("bin/ClassLibrary1.dll"));           }        }

 

调用内嵌Dll框架的一个例子