在AppDomain中运行的Csc.exe从调用者的命令行

时间:2018-04-05 02:16:43

标签: c# command-line-arguments appdomain csc

我正在尝试从我的可执行文件创建的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,我看不到这种行为。

任何帮助将不胜感激!

0 个答案:

没有答案