1

我想通过c#编译一个放在masm的bin文件夹中的.asm文件。我尝试了多种方法,如process.start,但没有任何帮助。它打开cmd但命令“ml”从不执行。它要么打开pwb。 exe(MASM)或记事本中的'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();
4

2 回答 2

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";
于 2012-12-14T17:07:44.000 回答
0

要启动“cmd.exe”并运行另一个程序,您需要使用/c开关。

/C 执行字符串指定的命令,然后终止

所以你需要:

startInfo.Arguments = "/c \"C:\Users\Hassan\Documents\Visual Studio 2010\Projects\FYP\FYP\MASM611\BIN\ml.exe\" file.asm";

我为路径中的空格添加了额外的引号。

如果您不需要通过命令提示符运行它 - “cmd.exe” - 那么您可以将“ml.exe”的路径放入并将FileName“file.ml”作为Arguments.

于 2012-12-14T17:07:03.017 回答