Can I compile and execute C# expression without saving the assembly to disk?
I can compile, get an instance and invoke a method of any C# type programmaticaly. There lots of info on that, including the StackOverflow (How can I evaluate a C# expression dynamically?). My problem is that I'm in the 开发者_运维技巧web environment and cannot save anything to /bin directory. I can compile "in-memory" as the above mentioned link suggests but then I won't be able to "unload" my custom assembly from the current AppDomain. After a while that will become a huge memory problem.
Is it possible to open a new AppDomain, compile new assembly "in-memory", evaluate some expression or access some member of that assembly inside of that new AppDomain and kill that AppDomain safely when done, all that without saving anything to a hard drive?
Have you taken a look at the DynamicMethod type in .Net? This type creates garbage collection enabled in memory methods using Reflection.Emit. This sounds like exactly what you're looking for.
精彩评论