我正在尝试从我的可执行文件创建的AppDomain中运行csc.exe(C#编译器)。但是,我所看到的是,传递给我的可执行文件的任何参数似乎也传递给csc.exe,即使我没有提供任何参数。
这是我的完整申请:
class Program
{
static void Main(string[] args)
{
var cscPath = @"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Roslyn\csc.exe";
var appDomain = AppDomain.CreateDomain("csc");
appDomain.ExecuteAssembly(cscPath);
Console.ReadLine();
}
}
当我在没有为我的程序提供任何参数的情况下运行它时,我看到了我的期望:
warning CS2008: No source files specified.
error CS1562: Outputs without source must have the /out option specified
但是,当我在我的可执行文件的命令行中添加“-test”时(使用我在Visual Studio中的项目的Debug选项卡),我得到了这个输出:
error CS2007: Unrecognized option: '-test'
warning CS2008: No source files specified.
error CS1562: Outputs without source must have the /out option specified
“-test”现在显示为csc.exe的错误,我不知道为什么它甚至会看到该参数。
显然,这是一个人为的例子,我并没有真正尝试在没有任何参数的情况下调用csc.exe,但这是我能看到行为的最小例子。
如果我使用Process.Start调用csc.exe,我看不到这种行为。
任何帮助将不胜感激!