C#动态编译dll或exe
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的更多相关文章
- OpenCV:Debug和Release模式 && 静态和动态编译
1.Release和Debug的区别 Release版称为发行版,Debug版称为调试版. Debug中可以单步执行.跟踪等功能,但生成的可执行文件比较大,代码运行速度较慢.Release版运行速度较 ...
- 将Qt5.5 动态链接生成的exe及依赖dll打包方法
Qt静态编译链接生成的exe文件,不需依赖七大姑八大姨的一堆dll,可以独立运行,发布很方便.但绝大多数用的都是Qt开源版本,如果用静态链接,会有些限制.那有没有办法即能享受静态编译的方便,又不受开源 ...
- win环境下,用虚拟化工具打包Qt动态编译exe的过程(使用Enigma Virtual Box)
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://goldlion.blog.51cto.com/4127613/834075 引子 ...
- 将Qt 动态链接生成的exe及依赖dll打包方法
源地址:http://blog.csdn.net/ztz0223/article/details/8939341 将Qt 动态链接生成的exe及依赖dll打包方法 原文:http://www.qtcn ...
- Qt--将Qt 动态链接生成的exe及依赖dll打包方法
Qt静态编译链接生成的exe文件,不需依赖dll,可以独立运行,发布很方便. 但绝大多数用的都是Qt开源版本,如果用静态链接,会有些限制. 方法之一,就是用动态编译,然后把exe和需要的dll整合成一 ...
- c#动态编译并动态生成dll
/// <summary> /// 动态编译并执行代码 /// </summary> /// <param name="code">代码< ...
- C#.Net 如何动态加载与卸载程序集(.dll或者.exe)0-------通过应用程序域AppDomain加载和卸载程序集
本博客中以“C#.Net 如何动态加载与卸载程序集(.dll或者.exe)”开头的都是引用莫问奴归处 微软装配车的大门似乎只为货物装载敞开大门,却将卸载工人拒之门外.车门的钥匙只有一把,若要获得还需要 ...
- C#.Net 如何动态加载与卸载程序集(.dll或者.exe)1----C#中动态加载和卸载DLL
我们知道在C++中加载和卸载DLL是一件很容易的事,LoadLibrary和FreeLibrary让你能够轻易的在程序中加载DLL,然后在任何地方卸载. 在C#中我们也能使用Assembly.Load ...
- Qt_技巧_将Qt动态链接生成的exe与dll打包方法
刚开始接触Qt,发现mac平台直接release编译一下就能够直接生成.app文件,并且可以直接运行..app位于工程文件内. 同样发方法在Windows直接运行exe却出现缺失dll情况. 讲过网上 ...
随机推荐
- 连通图 poj2186 最受欢迎的牛(求最受欢迎的牛的数量)
Popular Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 27531 Accepted: 11077 De ...
- 【bzoj1307】玩具 单调栈
题目描述 小球球是个可爱的孩子,他喜欢玩具,另外小球球有个大大的柜子,里面放满了玩具,由于柜子太高了,每天小球球都会让妈妈从柜子上拿一些玩具放在地板上让小球球玩. 这天,小球球把所有的N辆玩具摆成一排 ...
- BZOJ1880 [Sdoi2009]Elaxia的路线 【最短路 + dp】
题目 最近,Elaxia和w的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间.Elaxia和w每天都要奔波于宿舍和实验室之间,他们 希望在节约时间的前提 ...
- 学习 WebService 第二步:知识准备——SOAP vs REST(wsdl和wadl区别)(转)
原文地址:蓝精灵——默默争上游 笔记: SOAP和REST是两种实现WebService的主要方案(Web API部署REST貌似占了大半壁江山) REST Web Services 基于 HTTP ...
- CF911F Tree Destruction (树的直径,贪心)
题目链接 Solution 1.先找出树的直径. 2.遍历直径沿途的每一个节点以及它的子树. 3.然后对于每个非直径节点直接统计答案,令直径的两个端点为 \(x_1,x_2\) . \[Ans=\su ...
- bzoj 5056: OI游戏 最短路树的计数
OI游戏 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 196 Solved: 159[Submit][Status][Discuss] Descrip ...
- 【CF725D】Contest Balloons(贪心,堆)
题意:acm队伍可以得气球,相同气球数是一个排名.每个队伍有一个气球数上限,如果该队伍的气球数大于上限 该队伍被淘汰.给了你队伍的气球数,你的气球可以给别人,问你最大可能的排名. (2 ≤ n ≤ 3 ...
- power shell remoting
Powershell Remoting建立在windows WinRM服务之上,可以一对一或一对多远程控制,也可以建立HTTP 或 HTTPS的“listeners”,使用WS-MAM协议接收远程传递 ...
- es6总结(十一)--class & decorator
- LightOJ 1140: How Many Zeroes? (数位DP)
当前数位DP还不理解的点: 1:出口用i==0的方式 2:如何省略状态d(就是枚举下一个数的那个状态.当然枚举还是要的,怎么把空间省了) 总结: 1:此类DP,考虑转移的时候,应当同时考虑查询时候的情 ...