string strCode = @"
using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Reflection; namespace aaaa
{
public class Program
{
static void Main(string[] args)
{
GetDoc(""Testdoc.doc"");
Console.WriteLine(""输出成功"");
Console.ReadLine();
} public static void GetDoc(string name)
{
try
{
Assembly ass = Assembly.GetExecutingAssembly();
Stream ss = ass.GetManifestResourceStream(name);
if (ss != null)
{
byte[] buffer = new byte[ss.Length];
ss.Read(buffer, 0, buffer.Length);
File.WriteAllBytes(Environment.CurrentDirectory + ""\\ProbeDoc.doc"", buffer);
}
}
catch
{
Console.WriteLine(""error"");
}
}
}
}"; CompilerParameters objCompilerParams = new CompilerParameters();
objCompilerParams.GenerateExecutable = true; //编译成exe还是dll
objCompilerParams.GenerateInMemory = false; //是否写入内存,不写入内存就写入磁盘
objCompilerParams.OutputAssembly = "F:\\abcd.exe"; //输出路径
objCompilerParams.IncludeDebugInformation = false; //是否产生pdb调试文件 默认是false
objCompilerParams.ReferencedAssemblies.Add("System.dll");
objCompilerParams.ReferencedAssemblies.Add("System.Core.dll");
objCompilerParams.ReferencedAssemblies.Add("Microsoft.CSharp.dll");
objCompilerParams.EmbeddedResources.Add("D:\\Testdoc.doc"); //编译器选项:编译成(存储在内存中)的DLL
/*objCompilerParams.CompilerOptions = "/target:library /optimize";
//编译时在内存输出
objCompilerParams.GenerateInMemory = true;
//不生成调试信息
objCompilerParams.IncludeDebugInformation = false;*/
//创建编译类
CSharpCodeProvider objCompiler = new CSharpCodeProvider();
//进行编译
CompilerResults objCompileResults = objCompiler.CompileAssemblyFromSource(objCompilerParams, strCode); //获取编译结果:程序集
Assembly objAssembly = objCompileResults.CompiledAssembly; ////获取编译成的程序集的信息
//object objMainClassInstance = objAssembly.CreateInstance("Program");
//Type objMainClassType = objMainClassInstance.GetType(); ////调用程序集中的类,执行类中的方法,得到结果
//objMainClassType.GetMethod("Main").Invoke(objMainClassInstance, null);
//objMainClassType.GetMethod("PrintWorld").Invoke(objMainClassInstance, null);

C#动态编译dll或exe的更多相关文章

  1. OpenCV:Debug和Release模式 && 静态和动态编译

    1.Release和Debug的区别 Release版称为发行版,Debug版称为调试版. Debug中可以单步执行.跟踪等功能,但生成的可执行文件比较大,代码运行速度较慢.Release版运行速度较 ...

  2. 将Qt5.5 动态链接生成的exe及依赖dll打包方法

    Qt静态编译链接生成的exe文件,不需依赖七大姑八大姨的一堆dll,可以独立运行,发布很方便.但绝大多数用的都是Qt开源版本,如果用静态链接,会有些限制.那有没有办法即能享受静态编译的方便,又不受开源 ...

  3. win环境下,用虚拟化工具打包Qt动态编译exe的过程(使用Enigma Virtual Box)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://goldlion.blog.51cto.com/4127613/834075 引子 ...

  4. 将Qt 动态链接生成的exe及依赖dll打包方法

    源地址:http://blog.csdn.net/ztz0223/article/details/8939341 将Qt 动态链接生成的exe及依赖dll打包方法 原文:http://www.qtcn ...

  5. Qt--将Qt 动态链接生成的exe及依赖dll打包方法

    Qt静态编译链接生成的exe文件,不需依赖dll,可以独立运行,发布很方便. 但绝大多数用的都是Qt开源版本,如果用静态链接,会有些限制. 方法之一,就是用动态编译,然后把exe和需要的dll整合成一 ...

  6. c#动态编译并动态生成dll

    /// <summary> /// 动态编译并执行代码 /// </summary> /// <param name="code">代码< ...

  7. C#.Net 如何动态加载与卸载程序集(.dll或者.exe)0-------通过应用程序域AppDomain加载和卸载程序集

    本博客中以“C#.Net 如何动态加载与卸载程序集(.dll或者.exe)”开头的都是引用莫问奴归处 微软装配车的大门似乎只为货物装载敞开大门,却将卸载工人拒之门外.车门的钥匙只有一把,若要获得还需要 ...

  8. C#.Net 如何动态加载与卸载程序集(.dll或者.exe)1----C#中动态加载和卸载DLL

    我们知道在C++中加载和卸载DLL是一件很容易的事,LoadLibrary和FreeLibrary让你能够轻易的在程序中加载DLL,然后在任何地方卸载. 在C#中我们也能使用Assembly.Load ...

  9. Qt_技巧_将Qt动态链接生成的exe与dll打包方法

    刚开始接触Qt,发现mac平台直接release编译一下就能够直接生成.app文件,并且可以直接运行..app位于工程文件内. 同样发方法在Windows直接运行exe却出现缺失dll情况. 讲过网上 ...

随机推荐

  1. 2016-2017 ACM Central Region of Russia Quarterfinal Programming Contest BHanoi tower

    B Hanoi tower It has become a good tradition to solve the “Hanoi tower” puzzle at programming contes ...

  2. Java面试题之Java反射的原理

    什么是Java的反射? 在运行状态中,对于任意一个类,都能够知道这个类的属性和方法: 反射的作用? 如果给定一个类名,就可以通过反射机制来获取类的所有信息,也可以动态的创建对象和编译: 反射的原理? ...

  3. socket编程-微软小兵

    socket两端建立连接,不断开的连接的情况下做数据交互,客户端发送数据和服务端返回数据.直到客户端要求断开,则关闭连接. 代码目录结构:

  4. 数表(bzoj 3529)

    Description 有一张N×m的数表,其第i行第j列(1 < =i < =礼,1 < =j < =m)的数值为能同时整除i和j的所有自然数之和.给定a,计算数表中不大于a ...

  5. sharpwebmail邮件管理系统开源 下载及使用方法

    原文发布时间为:2008-11-16 -- 来源于本人的百度文章 [由搬家工具导入] 网址:http://sourceforge.net/projects/sharpwebmail/ 点击后:点击do ...

  6. php validator classes

    <?php /** * 验证类 */ class Validator { /* 函数名称:isNumber 简要描述:检查输入的是否为数字 输入:string 输出:boolean */ pub ...

  7. es6总结(八)--模块化-import

  8. IC 拔取器 rework station

  9. php 生成二维码图片

    php 生成二维码图片 (1)下载类库文件 php类库PHP QR Code,地址:http://phpqrcode.sourceforge.net/. (2)放到项目里 把下载的文件解压后有个php ...

  10. PHP读取APK的包信息,包括包名,应用名,权限,LOGO等

    [转]PHP读取APK的包信息,包括包名,应用名,权限,LOGO等 声明本文转自: 原文链接:https://www.jb51.net/article/53780.htm: 感谢分享! <?ph ...