你的问题可以分为两个:
1,如何使用C#调用命令行工具,给它输入命令行参数,并获取输出信息;
2,如何使用masm.exe和link.exe这两个命令行工具.
第一个问题你可以参考一下这样的代码:
using System;
using System.Diagnostics;
namespace ProcessDemo
{
class Program
{
[STAThread]
static void Main(string[] args)
{
ProcessStartInfo info;
Process proc;
string result;
//第一个参数是要调用的程序的路径
//第二个参数是要传给它的参数
//这里显示的是调用我的电脑上的C#编译器
info=new ProcessStartInfo(@"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe", @"c:\aaa.cs /target:exe");
//说明我们要捕获程序的输出信息
info.RedirectStandardOutput = true;
//为了捕获输出信息,必须设置这个属性为false
info.UseShellExecute=false;
//设置要调用的程序的工作目录(当前目录)
info.WorkingDirectory=@"C:\";
//隐藏cmd窗口的显示
info.WindowStyle=ProcessWindowStyle.Hidden;
//运行该程序
proc=Process.Start(info);
//获取程序的输出
result=proc.StandardOutput.ReadToEnd();
Console.WriteLine("输出信息是:");
//显示调用的程序往控制台窗口输出的信息
Console.WriteLine(result);
}
}
}
获取屏幕输出之后,你可能还需要判断它是不是给出了一个/几个错误提示,或者警告等等.这时你可以先尝试在cmd窗口下通过命令行使用这(两)个工具,找出出错信息文本的规律,然后使用正则表达式来进行匹配.如果不太熟悉正则表达式,可以看一下"正则表达式30分钟教程",随便搜一下就能找到了.
第二个问题你就得看相关的帮助文档了. 你也可以试一下Dos下的通用帮助命令参数:
masm /?
或
masm /help
link.exe也是一样.