如何在当前程序集中运行时编译动态代码?

时间:2015-09-20 14:42:39

标签: .net vb.net dynamic-compilation vbcodeprovider

我使用VBCodeProvider来编译代码,但是它会生成一个新的程序集,而且我还需要添加对我需要使用的程序集的所有引用。

有没有办法在当前程序集中编译代码?

2 个答案:

答案 0 :(得分:2)

VBCodeProvider已过时。使用Roslyn。但是,这仍然不允许您在运行时修改现有的程序集,因为它是不可能的。

编译并加载新程序集。您可以使用Reflection自动添加对Roslyn编译的引用列表。

答案 1 :(得分:1)

你不能调动当前的装配。

几年前,我写了一篇关于动态编译的主题:http://emoreau.com/Entries/Articles/2011/07/Compiling-code-on-the-fly.aspx

顺便说一下,只有你使用的是VS2015才能使用Roslyn(除非你使用的是VS2013可用的CTP,但是测试时其他任何东西都不是一个好主意。)