1.新加一个类库

  1. namespace ClassLibrary1
  2. {
  3. public class Class1
  4. {
  5. public int Add(int a, int b)
  6. {
  7. return a + b;
  8. }
  9. }
  10. }

2.新建一个接口

  1. [HttpPost]
  2. [Route("TestStream")]
  3. public HttpResponseMessage TestStream()
  4. {
  5. //获取Debug路径
  6. string str = Environment.CurrentDirectory;
  7. var filePath = str + @"\ClassLibrary1.dll";
  8. var result = new HttpResponseMessage(HttpStatusCode.OK)
  9. {
  10. Content = new StreamContent(new FileStream(filePath, FileMode.Open))
  11. };
  12. result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
  13.  
  14. return result;
  15. }

3.本地调用

  1. static void Main()
  2. {
  3.  
  4. var url = "http://localhost:9921/api/PrintService/TestStream";
  5. HttpClient client = new HttpClient();
  6. var response = client.PostAsync(url, new StringContent("", Encoding.UTF8, "application/json")).Result;
  7. response.EnsureSuccessStatusCode();
  8. var stream = response.Content.ReadAsStreamAsync().Result;
  9.  
  10. //获取Debug路径
  11. string str = Environment.CurrentDirectory;
  12. var filePath = str + @"\ClassLibrary1.dll";
  13. if (File.Exists(filePath) == false)
  14. {
  15. File.Create(filePath);//不存在就创建文件
  16. }
  17.  
  18. StreamToFile(stream, filePath);
  19.  
  20. Assembly assembly = Assembly.Load("ClassLibrary1");
  21. Type type = assembly.GetType("ClassLibrary1.Class1");
  22.  
  23. MethodInfo met = type.GetMethod("Add");
  24. object obj = Activator.CreateInstance(type, null);
  25. object[] parameter = { , };
  26. var result = met.Invoke(obj, parameter);
  27. Console.WriteLine("a + b = " + result);
  28.  
  29. Console.ReadLine();
  30. }
  31.  
  32. /// <summary>
  33. /// 将 Stream 写入文件
  34. /// </summary>
  35. public static void StreamToFile(Stream stream, string fileName)
  36. {
  37. // 把 Stream 转换成 byte[]
  38. byte[] bytes = new byte[stream.Length];
  39. stream.Read(bytes, , bytes.Length);
  40. // 设置当前流的位置为流的开始
  41. stream.Seek(, SeekOrigin.Begin);
  42.  
  43. // 把 byte[] 写入文件
  44. using (FileStream fs = new FileStream(fileName, FileMode.Open))
  45. {
  46. using (BinaryWriter bw =new BinaryWriter(fs))
  47. {
  48. bw.Write(bytes);
  49. }
  50. }
  51. }

下载服务器dll文件并动态加载的更多相关文章

  1. [转] 从 dll 程序集中动态加载窗体

    无涯 原文 从 dll 程序集中动态加载窗体 [原创] 昨天晚上花了一晚上时间写了一个从程序集中动态加载窗体的程序.将任何包含窗体的代码编译成 dll 文件,再把 dll 文件拷贝到本程序的目录下,本 ...

  2. Java从Jar文件中动态加载类

    动态加载jar包,在实际开发中经常会需要用到,尤其涉及平台和业务的关系的时候,业务逻辑部分可以独立出去交给业务方管理,业务方只需要提供jar包,就能在平台上运行. 下面通过一个实例来直观演示: 第一: ...

  3. C#调用DLL文件提示试图加载格式不正确的程序

    最近在调用第三方的DLL遇到了一个问题:试图加载格式不正确的程序,找了好久发现都没有解决问题,一直报错,后来发现是程序编译时的配置错了,要将项目->属性->平台选中release-X86 ...

  4. Java_Java中动态加载jar文件和class文件

    转自:http://blog.csdn.net/mousebaby808/article/details/31788325 概述 诸如tomcat这样的服务器,在启动的时候会加载应用程序中lib目录下 ...

  5. [转载] Java中动态加载jar文件和class文件

    转载自http://blog.csdn.net/mousebaby808/article/details/31788325 概述 诸如tomcat这样的服务器,在启动的时候会加载应用程序中lib目录下 ...

  6. Assembly.Load动态加载程序集而不占用文件 z

    方式一:占用文件的加载 Assembly assembly = Assembly.Load(path); 用上面的方法可以动态的加载到dll,但是用这种方法加载到的dll一直到程序运行结束都是占用的d ...

  7. PE文件动态加载执行过程

    主要步骤: 1.将要加载的文件读取到内存中(简称为文内),检查文件格式无误后,根据可选PE头(简称op头)的SizeOfImage,申请出一块空间用于存储该文件加载到内存后展开的数据(简称为内内).记 ...

  8. C# 动态加载程序集dll (实现接口)

    一.程序集(接口程序集):LyhInterface.Dll namespace LyhInterface { public interface ILyhInterface { void Run(); ...

  9. 动态加载js文件是异步的

    动态加载js文件是异步的. 今天调试一个错误,一个js方法各种调不到. 原因是因为所调方法的js文件是动态加载进来的. <script type="text/javascript&qu ...

随机推荐

  1. C#操作串口总结

    Technorati 标签: C#,SerialPort,ReadTo,ReadTimeout        最近几天一直在调一个要长时间连续不断的操作串口,并且是多线程运行,不允许中断的服务.后来服 ...

  2. 2.1.6 用ProtectX实现扫描的反击与追踪

    ProtectX是一款在用户连接网络时保护电脑的工具,可以同时监视20个端口,还可以帮助追踪攻击者的来源.一旦有人尝试连接到用户的电脑,它即可发出声音警告并将入侵者的IP位址记录下来,可以防止黑客入侵 ...

  3. 【Open Search产品评测】- 来往,7天轻松定制属于自己的搜索引擎

    [Open Search产品评测]--   来往,7天轻松定制属于自己的搜索引擎   [使用背景] 相信很多人都遇到过要给网站或者app做一个搜索功能的需求,很久之前自己折腾过lucene,搞了很久, ...

  4. [经典算法] 排列组合-N元素集合的所有子集(二)

    题目说明: 给定一组数字或符号,按照字典序产生所有可能的集合(包括空集合),例如给定1 2 3,则可能的集合为:{}.{1}.{1,2}.{1,2,3}.{1,3}.{2}.{2,3}.{3}. 题目 ...

  5. matlab 和 origin作图去除白边,字体调节

    一 matlab作图 (1)在图形文件figure的菜单上点击file->export setup, 在size选项中,对"expand axes to fill figure&quo ...

  6. SQL Server表的数据量大小查询

    今天想在服务器上还原一个DB,发现磁盘空间不够,查看发现,其中一个DB竟然有56G了.因此想收缩一下这个DB,发现大小没多大变化.然后在网上找了找SQL脚本,看能不能查看下哪个表的数据量那么大. 网上 ...

  7. Table of Contents - Redis

    Getting Started 安装配置环境 Redis 命令 Keys Strings Lists Hashs Sets Sorted Sets Transactions Connection Se ...

  8. MongoDB - MongoDB CRUD Operations, Query Documents, Project Fields to Return from Query

    By default, queries in MongoDB return all fields in matching documents. To limit the amount of data ...

  9. SQLite数据库增删改查

    一:SQLite数据库简介: SQLite是一种轻量级的关系型数据库,官网:http://www.sqlite.org/. SQLite数据库文件存在于移动设备的一下目录中:data->data ...

  10. Part 6 AngularJS ng repeat directive

    ng-repeat is similar to foreach loop in C#. Let us understand this with an example. Here is what we ...