我想通过c#编译放在masm中bin文件夹中的.asm文件。我尝试过多种方法,比如process.start但没有任何帮助。它打开cmd,但命令“ml”从不执行。它要么打开pwb.exe(MASM)或notepad中的'file.asm'。我将这些参数提供给CMD “path \ ml file.asm”,它可以正常工作。 ml是一个命令用于编译.asm文件。我使用的方法之一是
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = @"C:\WINDOWS\system32\cmd.exe";
startInfo.Arguments = "C:\Users\Hassan\Documents\Visual Studio 2010\Projects\FYP\FYP\MASM611\BIN\ml file.asm";
process.StartInfo = startInfo;
process.Start();
答案 0 :(得分:1)
如果你想以这种方式开始这个过程,你需要在路径上放置引号,因为空格:
startInfo.Arguments = @"""C:\Users\Hassan\Documents\Visual Studio 2010\Projects\FYP\FYP\MASM611\BIN\ml"" file.asm";
(在逐字字符串文字中,通过将它们加倍来包含双引号。)
或者,如果ml
实际上是可执行文件(我对masm一无所知),你可以使用:
startInfo.FileName = @"C:\Users\Hassan\Documents\Visual Studio 2010\Projects\FYP\FYP\MASM611\BIN\ml.exe";
startInfo.Arguments = "file.asm";
答案 1 :(得分:0)
要启动“cmd.exe”并运行其他程序,您需要使用/c
开关。
/ C执行string指定的命令,然后终止
所以你需要:
startInfo.Arguments = "/c \"C:\Users\Hassan\Documents\Visual Studio 2010\Projects\FYP\FYP\MASM611\BIN\ml.exe\" file.asm";
我为路径中的空格添加了额外的引号。
如果您不需要通过命令提示符 - “cmd.exe”运行它 - 那么您可以将路径放到FileName
中的“ml.exe”并只传递“file.ml”作为Arguments
。