0

我正在使用 MSDN 网站上的自定义编译器。当我尝试编译/运行一些测试代码(拖放到 .exe)时,控制台窗口打开然后关闭,而不是保持打开状态,直到我选择关闭它。如何保持打开状态?

来源:http: //msdn.microsoft.com/en-us/magazine/cc136756.aspx#S8

程序.cs

if (args.Length != 1)
        {
            // Display title, reset cursor to normal, add space
            Console.WriteLine("Alt ver 1.0 (Alpha)");
            Console.WriteLine();
            Console.ReadLine();
            try
            {
                Scanner scanner = null;
                using (TextReader input = File.OpenText(args[0]))
                {
                    scanner = new Scanner(input);
                }
                Parser parser = new Parser(scanner.Tokens);
                CodeGen codeGen = new CodeGen(parser.Result, Path.GetFileNameWithoutExtension(args[0]) + ".exe");
            }
            catch (Exception e)
            {
                Console.Error.WriteLine(e.Message);
                Console.ReadLine();
            }
        } //if
4

1 回答 1

1

Console.ReadLine(); 在块内的最后添加一个try试试这个

    if (args.Length != 1)
            {
                // Display title, reset cursor to normal, add space
                Console.WriteLine("Alt ver 1.0 (Alpha)");
                Console.WriteLine();
                Console.ReadLine();
                try
                {
                    Scanner scanner = null;
                    using (TextReader input = File.OpenText(args[0]))
                    {
                        scanner = new Scanner(input);
                    }
                    Parser parser = new Parser(scanner.Tokens);
                    CodeGen codeGen = new CodeGen(parser.Result, Path.GetFileNameWithoutExtension(args[0]) + ".exe");
                }
                catch (Exception e)
                {
                    Console.Error.WriteLine(e.Message);
                    Console.ReadLine();
                }
finally
{
Console.Readkey();
}
            } //if
else
{
Console.WriteLine("no args");
Console.ReadKey();
}

编辑:---传递参数问题我已经制作了这个程序,它可以完美地获取文件名作为参数
,请看一下

class Program
    {
        static void Main(string[] args)
        {
            if (args.Length > 0)
            {
                foreach (var arg in args)
                {
                    Console.WriteLine(arg);
                }
                Console.ReadKey();
            }
            else
            {
                Console.WriteLine("NO ARGS");
                var fileName = Console.ReadLine();
                Main(new string[] { fileName });
            }
        }
    }
于 2012-10-17T10:51:28.337 回答