Roslyn高级应用
2017-11-12

应用程序运行的两种方式

命令行执行

内存中运行

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 Study now

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 Changes Everything

概要介绍,待翻译

使用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