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文件并动态加载的更多相关文章

  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. javascript冷知识

    本人很少写博客,所以文笔很不好,如果解释的不够清楚的,欢迎点评 1.+号(一元加操作符): 如果放在数值前的话,对数值不会产生任何影响,不过放在其他的数据类型前面的话,就等于调用number()将他转 ...

  2. jquery相关代码

    1.jquery获取当前选中select的text值 var checkText=$("#slc1").find("option:selected").text ...

  3. Android开发——实现固定在ScrollView顶部的View,类似于新浪微博的评论列表的顶部

    现在很多App都实现了这个功能,例如新浪微博评论页面的评论.转发.赞的数字可以固定在屏幕上方.我个人很喜欢这种设计,所以利用一点空余时间简单实现了一个类似的功能. 先来看一下上面这张图的效果 这个是新 ...

  4. iOS篇之有沙盒缓存

    内存指的就是主板上的存储部件,是CPU直接与之沟通,并用其存储数据的部件,存放当前正在使用的(即执行中)的数据和程序,它的物理实质就是一组或多组具备数据输入输出和数据存储功能的集成电路,内存只用于暂时 ...

  5. jQuery的deferred对象详解(二)

    Deferred对象是由$.Deferred构造的,$.Deferred被实现为简单的工厂模式. $.Deferred的实现 创建三个$.Callbacks对象,分别表示成功done,失败fail,处 ...

  6. (ASP.Net)MVC4怎么设置@Html.TextBoxFor样式

    添加自定义样式和属性: @Html.TextBoxFor(s=>s.dd,new {@class="main",@style="width: 100px;" ...

  7. Redis中的批量删除数据库中的Key

    本文参考:http://blog.csdn.net/spring21st/article/details/15771861 http://stackoverflow.com/questions/575 ...

  8. 获得自动增长的MySQL主键

    下面的脚本教您如何获得自动增长的MySQL主键,如果您对MySQL主键方面感兴趣的话,不妨一看,相信对您学习MySQL主键方面会有所启迪. import java.sql.Connection; im ...

  9. 绝对好评的淘宝购物导航:baiso.uz.taobao.com

    绝对好评的淘宝购物导航:baiso.uz.taobao.com 绝对好评的淘宝购物导航--百搜:http://baiso.uz.taobao.com

  10. DWZ与KindEditor编辑器的整合

    DWZ自带的编辑器是xheditor,可能很多人用不习惯.就像我,习惯用kindeditor了.现在就来说说如何整合dwz和kindeditor. 一.打开DWZ的中的dwz.ui.js,进行修改. ...