首页 > 代码库 > 调用内嵌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框架的一个例子
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。