Easy-to-follow video tutorials help you learn software, creative, and business skills.Become a member
Since the dawn of computer programming, there have been command-based applications. The Windows operating system still supports command-line applications, and you won't be surprised to learn that Visual Studio has a console application template. The main reason I see for creating console apps is when you have a utility program that doesn't need a fancy user interface. I'm inside Visual Studio, and I've opened up a solution called CreateConsoleApplication, which contains two sample apps. I'm going to start by looking at the standard Program.cs that came from the Visual Studio console template.
I'm going to double-click on Program.cs. This file has a static void Main, which is the entry point for all .NET applications. Now, console applications have standard inputs, standard outputs, and standard errors. If I want to do the standard output, I use Console.Write or Console.WriteLine. The main difference between the two is that Console.WriteLine will output text and then move to a new line. The text that I want to print to the Console is going to say, "Type a file name." I want to run the application at this point.
To do that, in Visual Studio, I can choose Debug > Start. Now since I have a really short application, it's not going to stay on the screen for very long. Watch what happens. The screen shows up and then immediately disappears. To mitigate that, Visual Studio has this menu called Start Without Debugging. Now, my text shows up, and I'm given an opportunity to watch the last results before closing the window. I'll press the Spacebar to close this window. If I want to control that situation myself, I can use Console.ReadLine, and while I'm doing this, I might as well use this to grab the file name.
So I'm going to create a variable called fileName =. There are some fun things you can do with the console. I'm going to copy this little bit of text down here at the bottom of the screen. I'll copy this and then paste it right up here. I'm going to change the ConsoleColor before I output the text. Let me show you what that looks like. Debug > Start Debugging. As you can see, I now have yellow text in my command window. I've seen some interesting console applications that use characters and colors successfully.
Check out the Heroic Adventure application in the exercise folder to see an example. I'm now going to press any key. Sometimes you don't want to output your information to the standard console out. You'd rather output it to another area on your computer. A common example here is to output to a file stream. So, I'm going to take this code down here and copy it, and paste it right here-- Ctrl+V to paste--and then I'm going to uncomment the code by pressing Ctrl+K, Ctrl+U. Now, this little bit of code I just wrote, it says, "Get the current output," which is a TextWriter, "and store it in this variable.
Now switch to a new StreamWriter based on this file name that the user is going to type in." Then I'm going to set the console to use the StreamWriter to that file. Now we'll no longer write to the standard output, but we'll write into the file. So I write a line of code here, which goes into the file. I flush the file so that the information is stored in the file. I switch back to the old output on this line of code, and then I want to see the results. So what I'm going to do on line 25 is I'm going to start a process.
.NET has a class called Process, which I can use to launch any application. Here I'm launching an app based on the file name that I send. So if I chose the file name mydemo.xls, it would open up Excel. Let me show you this application running. Debug > Start Debugging. I'm going to type a file name Demo.txt, which is a text file. So when it launches the process, it's going to run in notepad. There is Notepad.
As you can see, my output successfully ended up inside the file. Close Notepad. Press the Enter key to close this window. Next, let me switch over to this second project. I'm going to set this as my Startup by right-clicking and then choosing Set as StartUp. Then I'm going to double-click on Program.cs. Here's the standard pattern you see quite often. You go out to your file system and you type in "xcopy" and then a file name and a location.
This utility will take this file and copy it to this secondary location. So you see what I'm doing is I'm passing two arguments into this application. So if I want to mimic this in my application, I can do that by having a String array as a parameter on a static void Main. So what I'm going to do in this example is I'm going to check the argument array up here to see if there's any data in it. So I check if args.Length is greater than 0.
Then I know there's at least one item in the array. I then loop over to all the items in the array and I check to see if it starts with a -file name:. If it does, then I'm going to split off the backend of it, whatever text comes after the colon. That's what I'm doing here. I'm splitting on this colon, and then I'm grabbing the second part of this array that was just generated here. Arrays in C# always start at zero. So this is second part of the array. I'll then compile the application, and then I would go out to the command prompt and then run the application and pass the parameters in.
For convenience sake, Visual Studio has this nice little feature where I can go to my Properties, double-click here, go to Debug, and what I'm saying here is whenever you run a Debug session, here is the arguments I want to pass into the application, which means I don't have to go out to a command prompt to do this. So you see I'm passing an -file name: and then file.txt, and then I'm passing in a second argument right here. So now when I come up here and I choose to Debug > Start Debugging, it's going to pick up those parameters, pass them into my program-- I will kill the application-- and then what did it do? Then it used that file name to change the standard output and write to that file.
You can see that file if you go over here and choose Open Folder in Windows Explorer, and go to the bin folder and then go to the Debug folder, there is the file that was created for me, file.txt. So let me review. The main reason you create a console application is when you are creating a utility that doesn't need a UI, except for a standard console screen.
Get unlimited access to all courses for just $25/month.Become a member
82 Video lessons · 98566 Viewers
61 Video lessons · 85854 Viewers
71 Video lessons · 69749 Viewers
56 Video lessons · 102056 Viewers
Access exercise files from a button right under the course name.
Search within course videos and transcripts, and jump right to the results.
Remove icons showing you already watched videos if you want to start over.
Make the video wide, narrow, full-screen, or pop the player out of the page into its own window.
Click on text in the transcript to jump to that spot in the video. As the video plays, the relevant spot in the transcript will be highlighted.
Your file was successfully uploaded.