Thursday, April 21, 2011

Is it possible to load and execute C# snippets using DLR?

The majority of material I have found regarding DLR is related to IronPython. Can you parse and execute C# using DLR? If so is there over head that would prevent you from attempting this on a web server with about 30 users?

More specifically I would like to script the configuration of my workflow objects when a user first initiates a workflow. Depending on conditions that change through out the year workflows may start at different steps, hence running configuration scripts seems like a good way to handle the variation.

From stackoverflow
  • It sounds like you're really talking about the C# "compiler as a service" (at the end of this video), which will hopefully be in the 5.0 timescale for .NET (although Mono has it now). For now, CSharpCodeProvider is the best we have (which works largely like "csc").

    David Robbins : Thanks - was reading your blog today. Good stuff. Basically I debating whether I go the CSScript.net route or pursue the CSharpCodeProvider way.
    David Robbins : Marc, can you recommend some good samples beyond the MSDN link? Thanks again.
    Marc Gravell : Which - compiler as a service? Kinda hard, since it doesn't exist and won't for another year or so (at a guess). Or did I misunderstand the question...?
    David Robbins : CSharpCodeProvider.
    Marc Gravell : I don't know of any *specific* ones - but it isn't hard an IMO the MSDN example shows a lot of it. The main trick is remembering to includ C# 3.0: var compiler = new CSharpCodeProvider(new Dictionary() { { "CompilerVersion", "v3.5" } });
    David Robbins : Thanks for advice!!
  • Although Marc offered an alternative for me, I read this related SO question and C# and VB are not supported as of yet.

    Marc Gravell : It isn't really a factor of "as of yet" - they simply aren't DLR languages...
  • You may find this relevant...though it doesn't run on the DLR itself.

    http://stackoverflow.com/questions/3407318/mono-compiler-as-a-service-mcs

    It has the advantage of running snippets and not loading a new assembly on every compile like CodeDom does.

0 comments:

Post a Comment