views:

584

answers:

3

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.

+3  A: 

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").

Marc Gravell
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.
David Robbins
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...?
Marc Gravell
CSharpCodeProvider.
David Robbins
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<string, string>() { { "CompilerVersion", "v3.5" } });
Marc Gravell
Thanks for advice!!
David Robbins
A: 

Although Marc offered an alternative for me, I read this related SO question and C# and VB are not supported as of yet.

David Robbins
It isn't really a factor of "as of yet" - they simply aren't DLR languages...
Marc Gravell
A: 

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.

JeffN825