C#源代码由C解释#

C#源代码由C解释#,c#,C#,我可以从PowerShell执行C#源代码,也可以从C#执行PowerShell源代码。 问题是,我如何在不使用csc.exe编译的情况下从C程序执行C源代码。这在.net framework中使用CodeDom类命名空间显式满足。System.CodeDom和System.CodeDom.Compiler (来自文件) 我意识到这确实在内部使用了编译器,这是OP希望避免的,但我看不出有任何理由不使用它。不要。别这样。您可能正在考虑一个eval()函数,就像javascript和其他动态语言一样

我可以从PowerShell执行C#源代码,也可以从C#执行PowerShell源代码。
问题是,我如何在不使用csc.exe编译的情况下从C程序执行C源代码。这在.net framework中使用CodeDom类命名空间显式满足。System.CodeDom和System.CodeDom.Compiler

(来自文件)


我意识到这确实在内部使用了编译器,这是OP希望避免的,但我看不出有任何理由不使用它。

不要。别这样。您可能正在考虑一个eval()函数,就像javascript和其他动态语言一样。问题是,对于通用语言来说,eval()是一个巨大的安全问题。C#确实使执行C#源代码成为可能,但它确实让执行变得非常困难。请阅读Roslyn。这是.NET平台中新的“编译器即服务”功能最终,如果不进行编译,就无法真正执行C代码,但可以使用Rosyln对C进行一些“脚本化”操作,因为C有开放的规范,您可以编写自己的编译器:)
CSharpCodeProvider provider = new CSharpCodeProvider();

// Build the parameters for source compilation.
CompilerParameters cp = new CompilerParameters();

// Add an assembly reference.
cp.ReferencedAssemblies.Add( "System.dll" );

// Generate an executable instead of 
// a class library.
cp.GenerateExecutable = true;

// Set the assembly file name to generate.
cp.OutputAssembly = exeFile;

// Save the assembly as a physical file.
cp.GenerateInMemory = false;

// Invoke compilation.
CompilerResults cr = provider.CompileAssemblyFromFile(cp, sourceFile);