使用cmd通过c#编译.asm文件

时间:2012-12-14 17:04:02

标签: c# cmd masm

我想通过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();

2 个答案:

答案 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