Since SharePoint Online CSOM is now .NET Core compatible, it means I can start doing all my C# code work in Visual Studio Code and drop the heavy weight application of Visual Studio (Community/Enterprise). Yes, I might need to wait a little longer until SharePointPnPCoreOnline become .NET Core compatible too, but I’m sure that’s not far behind.
Although I have been a developer for many years, and used VS Code for a while for PowerShell and SPFX, I haven’t done any C# projects. This made me realise that I didn’t know how to start a C# project, how to add a reference to another project, add NuGet packet etc., inside VS Code. Does this mean I’m not very good at my job because I don’t know this simple information? No. It just means I’ve never done it before.
This blog post is going to just walkthrough some of the simple steps to get yourself up and running with a C# project using Visual Studio Code. For someone who spent most of his working life inside Visual Studio Community/Enterprise, the steps inside VS Code it is all command line calls and not using GUI’s and wizards. Which sometimes feels frustrating.
The dotnet https://docs.microsoft.com/en-us/dotnet/core/tools/ commands are what we will be using.
You can jump to the relevant point in the blog post from the bookmark links below:
Preparing a Folder to work in
Creating a Solution
Creating a Project
Adding Projects to Solutions
Adding a Project Reference
Getting Intellisense to work
Writing some code
Build the Solution
Run the Project
Publishing the Project
Debugging the Project
Adding a NuGet Package
Listing the NuGet Packages
Remove a NuGet Package
Preparing a Folder to work in
- Open Visual Studio Code inside a blank folder.
- File -> Open Folder
- Navigate to where you want the project to be.
- Click New Folder and name the folder
- Select the folder.
- Open the Terminal
- Terminal -> New Terminal
- You can use Bash / Windows PowerShell / PowerShell 6 / PowerShell 7
Creating a Solution
- In the terminal type the following to create a solution. The name of the solution is the name of the folder it sits in, you can use –name to give it a different name.
- dotnet new sln

Creating a project
There are loads of project types you can create, and just typing dotnet new –help
shows you all the different types. Using the short name creates that type of project.

Let us create a C# Console project, —output is the folder location where the project is going to be put.
- dotnet new console –output CSharpConsole
Let us also create a C# Library class project.
- dotnet new classlib –output CSharpLibrary

Adding Projects to the Solution
With Visual Studio when you added a project, you automatically added these projects to the solution. This is not the case with VS Code. You must do an additional step to add the projects to the solution.
- dotnet sln add CSharpConsole/CSharpConsole.csproj
- dotnet sln add CSharpLibrary/CSharpLibrary.csproj

Adding a Project Reference
To add the CSharpLibrary reference to the CSharpConsole we need to call the add the reference
- dotnet add CSharpConsole/CSharpConsole.csproj reference CSharpLibrary/CSharpLibrary.csproj

Getting Intellisense to work
When I was walking through the steps to ensure this blog post is accurate, I didn’t need to do these following steps to get the intellisense to work. They just worked. However, I’m going to still add this here in case you find the intellisense is not working for you.
- Ctrl + Shift + p
- Type “OmniSharp: Select Project”
and press enter - Choose the solution workspace entry
Writing some code
To continue this blog post that you can follow along with , you will require some code.
- In the CSharpLibrary project, rename the class.cs to IntLibrary.cs
- Paste in the following code, this is a simple method that checks if the string value is greater than 5.
- In the CSharpConsole project, paste the following code. This code asks the user for an input and returns true or false if the value is above 5 or not. With a console check for too many rows or empty value to quit.
Build the solution
The command to build the solution is:
- dotnet build

Run the Project
To run the project you need to pass in the Project file.
- dotnet run –project CSharpConsole/CSharpConsole.csproj
Or if you are already in the project’s directory
- dotnet run

Publishing the Project
To publish the project to run it as an executable in this console case
- dotnet publish –configuration release

Debugging the Project
No matter how good you are, you will need to debug code at somepoint.
- Put a breakpoint in your code. Press F5.
- First time you will be asked the project type. Select .NET Core. This will create a launch.json file. As this project is a console project, we need to modify the configuration within the launch.json file to make the console point to Integrated terminal, otherwise the line to clear the console will fail.
- Change “console”: “internalConsole”
on line 15 and change to “console”: “integratedTerminal”
- Change “console”: “internalConsole”
- Press F5 to debug the code.

Adding a NuGet Package
Nearly all projects now will involve adding a NuGet package of some sort. Again with the Command line to add, which I must admit I miss using a GUI. The GUI allowed you to search, now you need to know the name of the package. I’m going to add the SharePoint CSOM package to the console application
- dotnet add CSharpConsole/CSharpConsole.csproj package Microsoft.SharePointOnline.CSOM

Optionally you can add the version parameter to get a specific version of a package.
- dotnet add CSharpConsole/CSharpConsole.csproj package Newtonsoft.json –version 12.0.1
Listing the NuGet Packages
To find out which project has which NuGet packages already installed,
- dotnet list package

Remove a NuGet Package
To remove a given NuGet Package you can type the following
- dotnet remove CSharpConsole/CSharpConsole.csproj package Newtonsoft.json
Hopefully, that is enough to get yourself going, of course all commands have –help that explains how to use the command.