使用批处理文件从命令行运行CSC.exe

问题描述:

我正在使用以下批处理脚本代码来编译c#代码,但是我看到的是一个黑色窗口(csc.exe)闪烁,我看不到创建的exe文件。使用批处理文件从命令行运行CSC.exe

start /wait C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe /out:aa.exe Program.cs 
start aa.exe 
pause 

我想在同一位置创建文件aa.exe为Program.cs的

基本上我想要的是动态编译的Program.exe代码并运行它。我

using this following references: 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.IO; 
using System.Threading; 
using System.Net.Mail; 
+0

下面是关于这个问题的更多信息:命令行建筑CSC.EXE(http://msdn.microsoft.com/ en-us/library/vstudio/78f4aasd.aspx) –

而不是使用start来启动该程序,请考虑cmd。如果您使用cmd /K,它应该在命令运行后保持打开状态,让您有时间检查输出。

+0

是的!这使我能够看到现在的错误并正常工作。 –

+1

标记正确的答案有助于通知他人您的问题已得到解决,而不会花费时间排除故障。干杯 –

用途:

csc.exe /out:StackBackTraceOrRT_FATAL.exe StackBackTraceOrRT_FATAL.cs 

或者你想用`CSharpCodeProvider

+0

不,我不想使用任何预编译的代码。我想立即编译并执行它。 –

+0

@AkshayJ:请参阅MSDN可以做什么CSharpCodeProvider。它是针对C#编译器的可编程包装器,可以从字符串编译代码并生成程序集,既可以存储在磁盘上,也可以存储在内存中。并按需求执行。 – abatishchev

不要忘了在命令添加引用:

/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\<dotnet_version>\Microsoft.CSharp.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\<dotnet_version>\mscorlib.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\<dotnet_version>\System.Core.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\<dotnet_version>\System.dll"