C#Visual studio Ctrl + F5打开cmd,而不是程序控制台

时间:2014-01-22 13:19:14

标签: c# visual-studio-2012 console

过去几天我一直在编写一些控制台应用程序,但是最近当我尝试启动而没有调试(Cntl + F5)时,它打开了C:\ Windows \ system32 \ cmd.exe,而不是程序控制台。当我用F5开始时,一切正常。我想我搞砸了选项或其他东西,但我似乎无法找到解决方法。请帮忙吗?

编辑:这是一些示例代码 - 它打印一个带整数的螺旋矩阵

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _14_SpiralMatrix
{
    class MatrixD
    {

        static int[,] matrix;
        static int sideSize;
        static int counter = 1;
        static int row = 0;
        static int col = 0;
        static bool finished = false;

        static void Main(string[] args)
        {
            sideSize = int.Parse(Console.ReadLine());


            matrix = new int[sideSize, sideSize];

            while (finished == false)
            {
                GoDown();
                GoRight();
                GoUp();
                GoLeft();
            }

            Console.WriteLine();
            PrintMatrix();
        }

        static void PrintMatrix()
        {
            for (int i = 0; i < sideSize; i++)
            {
                for (int j = 0; j < sideSize; j++)
                {
                    if (matrix[i, j] < 9)
                    {
                        Console.Write(matrix[i, j] + "  ");
                    }
                    else
                    {
                        Console.Write(matrix[i, j] + " ");
                    }
                }
                Console.WriteLine();
                Console.WriteLine();
            }
        }

        static void GoDown()
        {
            if (matrix[row, col] != 0)
            {
                finished = true;
            }

            //assign numbers until it reaches the end of matrix, or already assigned number
            while (row < sideSize && matrix[row, col] == 0)
            {
                matrix[row, col] = counter;
                row++;
                counter++;
            }

            //shift row and col so next method can start from the next empty cell
            row--;
            col++;
        }

        static void GoRight()
        {
            //if next empty cell is filled up, than end of spiral is reached
            if (matrix[row, col] != 0)
            {
                finished = true;
            }

            while (col < sideSize && matrix[row, col] == 0)
            {
                matrix[row, col] = counter;
                col++;
                counter++;
            }
            col--;
            row--;
        }

        static void GoUp()
        {
            if (matrix[row, col] != 0)
            {
                finished = true;
            }

            while (row > -1 && matrix[row, col] == 0)
            {
                matrix[row, col] = counter;
                row--;
                counter++;
            }

            row++;
            col--;
        }

        static void GoLeft()
        {
            if (matrix[row, col] != 0)
            {
                finished = true;
            }
            while (matrix[row, col] == 0)
            {
                matrix[row, col] = counter;
                col--;
                counter++;
            }

            col++;
            row++;

        }


    }
}

4 个答案:

答案 0 :(得分:1)

根据汤姆的建议,我决定将评论作为答案发布,以便更加明显(显然它也很有用)。

如果您正在运行某些防病毒程序(特别是Avast,但其他人可能会产生相同的效果),那么您的防病毒程序可能会占用您的控制台窗口,关闭它,然后通过cmd重新运行您的应用程序。可执行程序。我认为反病毒正在对您的程序进行安全检查。您可以将您的可执行文件作为防病毒软件中的例外情况进行记录,也可以暂时禁用您的防病毒软件(出于明显的安全原因,我建议使用后者而不是后者)。

我不知道OP是否找到了原始问题,但我写这篇文章是希望它能帮助别人!

答案 1 :(得分:0)

转到工具 - &gt; 选项,然后选择环境 - &gt; 键盘。然后单击按快捷键文本框,然后按 Ctrl + F5 。你应该看到这个:

enter image description here

如果您已选择Debug.StartWithoutDebugging,请右键单击您的项目并选择属性。在左侧列表中选择 Debug ,并验证它是启动项目(同时验证是否已设置相应的配置):

enter image description here

如果一切设置正确,那么只需要您的代码完成任何打印。尝试将Main方法代码的最后几行更改为:

Console.WriteLine();
Console.WriteLine("PrintMatrx:");
PrintMatrix();

另请注意,您在此处从键盘读取输入:

sideSize = int.Parse(Console.ReadLine());

在您输入内容并按 enter 键之前,程序将不会继续。您可以使应用程序的行为更具可读性:

Console.Write("Enter side size:");
sideSize = int.Parse(Console.ReadLine());

答案 2 :(得分:0)

问题:实际上您的程序没有问题。您的程序正在等待从用户读取整数而不在控制台上显示任何文本。因此,当您从非调试模式运行它时,它似乎是命令提示符而不是您的控制台。

解决方案:只需在Console.ReadLine()声明

之前在控制台上打印一些文字

试试这个:

   static void Main(string[] args)
    {
        Console.WriteLine("Enter some Integer"); // <-- print some text on console before read statement
        sideSize = int.Parse(Console.ReadLine());

答案 3 :(得分:0)

您是否尝试检查Visual Studio许可证是否已正确应用?

当我在安装VS后尝试测试“Hello world”控制台应用程序时,我曾经遇到过这个问题。我甚至不会删除Process Explorer的控制台进程。

希望这可以提供帮助。