应用程序运行的两种方式
命令行执行
内存中运行
Stream sr = Assembly.GetExecutingAssembly().GetManifestResourceStream("ExecuteExeFileInMemory.t1.exe"); byte[] fileBytes = new byte[sr.Length]; sr.Read(fileBytes, 0, (int)sr.Length - 1); Assembly assembly = Assembly.Load(fileBytes); MethodInfo mi = assembly.EntryPoint; mi.Invoke(null, null);
这样运行会出现问题:
之所以出现错误,是因为两个程序都是“WinForm程序”,于是在一个线程里就出现了两个消息循环,导致错误
解决方法是,在独立的线程执行:
new Thread(()=>mi.Invoke(null, null)).Start();
Roslyn学习系列
简单、系统地介绍Rosly,包括文章、视频
Roslyn常见问题,翻译完应该功力大增:https://joshvarty.wordpress.com/roslynfaq/csharp/#q9
使用Roslyn解析C#代码
Getting started with Roslyn: transforming C# code
待翻译
理解Roslyn基础知识
Understanding The Basics Of Roslyn
待翻译
使用Roslyn将C#代码生成类图
Generate diagrams from C# source code using Roslyn
待翻译
使用Roslyn将UML图转换成C#类
Code Generation with Roslyn: a Skeleton Class from UML
待翻译
Roslyn改变了所有的事
概要介绍,待翻译
使用Roslyn对C#代码进行内存编译
In-memory C# compilation (and .dll generation) using Roslyn
使用Roslyn开发VS Code插件:IL View
C# IL Viewer for Visual Studio Code using Roslyn side project
这是一个开源项目。可以深入进行Roslyn高级应用。
一个应用案例(代码提示)
http://www.cnblogs.com/foreachlife/p/ciiproslyn.html