下载服务器dll文件并动态加载
1.新加一个类库
- namespace ClassLibrary1
- {
- public class Class1
- {
- public int Add(int a, int b)
- {
- return a + b;
- }
- }
- }
2.新建一个接口
- [HttpPost]
- [Route("TestStream")]
- public HttpResponseMessage TestStream()
- {
- //获取Debug路径
- string str = Environment.CurrentDirectory;
- var filePath = str + @"\ClassLibrary1.dll";
- var result = new HttpResponseMessage(HttpStatusCode.OK)
- {
- Content = new StreamContent(new FileStream(filePath, FileMode.Open))
- };
- result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
- return result;
- }
3.本地调用
- static void Main()
- {
- var url = "http://localhost:9921/api/PrintService/TestStream";
- HttpClient client = new HttpClient();
- var response = client.PostAsync(url, new StringContent("", Encoding.UTF8, "application/json")).Result;
- response.EnsureSuccessStatusCode();
- var stream = response.Content.ReadAsStreamAsync().Result;
- //获取Debug路径
- string str = Environment.CurrentDirectory;
- var filePath = str + @"\ClassLibrary1.dll";
- if (File.Exists(filePath) == false)
- {
- File.Create(filePath);//不存在就创建文件
- }
- StreamToFile(stream, filePath);
- Assembly assembly = Assembly.Load("ClassLibrary1");
- Type type = assembly.GetType("ClassLibrary1.Class1");
- MethodInfo met = type.GetMethod("Add");
- object obj = Activator.CreateInstance(type, null);
- object[] parameter = { , };
- var result = met.Invoke(obj, parameter);
- Console.WriteLine("a + b = " + result);
- Console.ReadLine();
- }
- /// <summary>
- /// 将 Stream 写入文件
- /// </summary>
- public static void StreamToFile(Stream stream, string fileName)
- {
- // 把 Stream 转换成 byte[]
- byte[] bytes = new byte[stream.Length];
- stream.Read(bytes, , bytes.Length);
- // 设置当前流的位置为流的开始
- stream.Seek(, SeekOrigin.Begin);
- // 把 byte[] 写入文件
- using (FileStream fs = new FileStream(fileName, FileMode.Open))
- {
- using (BinaryWriter bw =new BinaryWriter(fs))
- {
- bw.Write(bytes);
- }
- }
- }
下载服务器dll文件并动态加载的更多相关文章
- [转] 从 dll 程序集中动态加载窗体
无涯 原文 从 dll 程序集中动态加载窗体 [原创] 昨天晚上花了一晚上时间写了一个从程序集中动态加载窗体的程序.将任何包含窗体的代码编译成 dll 文件,再把 dll 文件拷贝到本程序的目录下,本 ...
- Java从Jar文件中动态加载类
动态加载jar包,在实际开发中经常会需要用到,尤其涉及平台和业务的关系的时候,业务逻辑部分可以独立出去交给业务方管理,业务方只需要提供jar包,就能在平台上运行. 下面通过一个实例来直观演示: 第一: ...
- C#调用DLL文件提示试图加载格式不正确的程序
最近在调用第三方的DLL遇到了一个问题:试图加载格式不正确的程序,找了好久发现都没有解决问题,一直报错,后来发现是程序编译时的配置错了,要将项目->属性->平台选中release-X86 ...
- Java_Java中动态加载jar文件和class文件
转自:http://blog.csdn.net/mousebaby808/article/details/31788325 概述 诸如tomcat这样的服务器,在启动的时候会加载应用程序中lib目录下 ...
- [转载] Java中动态加载jar文件和class文件
转载自http://blog.csdn.net/mousebaby808/article/details/31788325 概述 诸如tomcat这样的服务器,在启动的时候会加载应用程序中lib目录下 ...
- Assembly.Load动态加载程序集而不占用文件 z
方式一:占用文件的加载 Assembly assembly = Assembly.Load(path); 用上面的方法可以动态的加载到dll,但是用这种方法加载到的dll一直到程序运行结束都是占用的d ...
- PE文件动态加载执行过程
主要步骤: 1.将要加载的文件读取到内存中(简称为文内),检查文件格式无误后,根据可选PE头(简称op头)的SizeOfImage,申请出一块空间用于存储该文件加载到内存后展开的数据(简称为内内).记 ...
- C# 动态加载程序集dll (实现接口)
一.程序集(接口程序集):LyhInterface.Dll namespace LyhInterface { public interface ILyhInterface { void Run(); ...
- 动态加载js文件是异步的
动态加载js文件是异步的. 今天调试一个错误,一个js方法各种调不到. 原因是因为所调方法的js文件是动态加载进来的. <script type="text/javascript&qu ...
随机推荐
- C#操作串口总结
Technorati 标签: C#,SerialPort,ReadTo,ReadTimeout 最近几天一直在调一个要长时间连续不断的操作串口,并且是多线程运行,不允许中断的服务.后来服 ...
- 2.1.6 用ProtectX实现扫描的反击与追踪
ProtectX是一款在用户连接网络时保护电脑的工具,可以同时监视20个端口,还可以帮助追踪攻击者的来源.一旦有人尝试连接到用户的电脑,它即可发出声音警告并将入侵者的IP位址记录下来,可以防止黑客入侵 ...
- 【Open Search产品评测】- 来往,7天轻松定制属于自己的搜索引擎
[Open Search产品评测]-- 来往,7天轻松定制属于自己的搜索引擎 [使用背景] 相信很多人都遇到过要给网站或者app做一个搜索功能的需求,很久之前自己折腾过lucene,搞了很久, ...
- [经典算法] 排列组合-N元素集合的所有子集(二)
题目说明: 给定一组数字或符号,按照字典序产生所有可能的集合(包括空集合),例如给定1 2 3,则可能的集合为:{}.{1}.{1,2}.{1,2,3}.{1,3}.{2}.{2,3}.{3}. 题目 ...
- matlab 和 origin作图去除白边,字体调节
一 matlab作图 (1)在图形文件figure的菜单上点击file->export setup, 在size选项中,对"expand axes to fill figure&quo ...
- SQL Server表的数据量大小查询
今天想在服务器上还原一个DB,发现磁盘空间不够,查看发现,其中一个DB竟然有56G了.因此想收缩一下这个DB,发现大小没多大变化.然后在网上找了找SQL脚本,看能不能查看下哪个表的数据量那么大. 网上 ...
- Table of Contents - Redis
Getting Started 安装配置环境 Redis 命令 Keys Strings Lists Hashs Sets Sorted Sets Transactions Connection Se ...
- 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 ...
- SQLite数据库增删改查
一:SQLite数据库简介: SQLite是一种轻量级的关系型数据库,官网:http://www.sqlite.org/. SQLite数据库文件存在于移动设备的一下目录中:data->data ...
- 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 ...