当我通过 ide 编译时,该文件无法编译。但是当我手动打开 powershell 并编写命令(来自参数)时,一切正常。
public void CreateTest(string filePath, int a, int b)
{
var pc = new Process
{
StartInfo =
{
Verb = "runas",
Arguments = $"dotnet \"C:\\Program Files\\dotnet\\sdk\\6.0.300\\Roslyn\\bincore\\csc.dll\" -r:\"C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App\\6.0.5\\System.Private.CoreLib.dll\" -r:\"C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App\\6.0.5\\System.Console.dll\" -r:\"C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App\\6.0.5\\System.Runtime.dll\" -r:\"C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App\\6.0.5\\System.Runtime.InteropServices.RuntimeInformation.dll\" {filePath}.cs",
FileName = "powershell",
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true
}
};
pc.Start();
string stdoutx = pc.StandardOutput.ReadToEnd();
string stderrx = pc.StandardError.ReadToEnd();
pc.WaitForExit();
Console.WriteLine("Exit code : {0}", pc.ExitCode);
Console.WriteLine("Stdout : {0}", stdoutx);
Console.WriteLine("Stderr : {0}", stderrx);
}
您可能需要对字符串进行两次转义,但为什么还要在这里使用 PowerShell?如果正常 cmd 将应付启动?是的,即使你正面运行 dotnet,它也可以工作。