Create Multi-Project App in .Net Core 3.0
Tags: csharp, dotnet, dotnetcore, vscode
Published: 2019-12-16 08:57:35

Some time back .Net Core version 3.0 was released and I thought to explore it and then an idea came to me about creating multi project application the same way we create in .Net Framework.
.Net Core is an open source framework for developing and deploying cross platform application on any platform. Check out this [link](https://docs.microsoft.com/en-us/dotnet/core/about) to learn more about .Net Core.
To demonstrate how we can create, build and deploy multi project app in the .Net Core 3.0, I have decided to develop a sample functional CVS Validator console app. I will explain the functionality of this app later.
First, we need to setup development environment.

##Prerequisite
We basically need .Net CLI tools, .Net Core Runtime and a code editor in order to develop and run .Net Core app on our machine.
.Net CLI tools, .Net Core Runtime comes with the .Net Core SDK so download and install the latest version of .Net Core SDK available from this [link] (https://dotnet.microsoft.com/download).
And for code editor I will recommend VS Code but if you already have any other code editor that you are using to write C# code then stick with that otherwise download and install VS Code from this [link] (https://code.visualstudio.com/download).
After installing SDK and VS Code, open the command prompt and run following command to check if SDK installed properly.
```
dotnet --version
```
*You must get the latest version number as a result.*

After done with the environment setup we are ready to develop our CSV Validator console app.

##Create Application Code Scaffolding
This app will have a solution file and three projects to contain code for client, CSV data validation functionality and unit testing.

###Create Solution and Projects
So now go to the folder location where you want to develop the app and open the command window (since I have GIT installed on my machine, I will be using git bash window).
Create solution by running following command in the command window.
```
dotnet new sln -o CsvValidatorApp
```
It will create CsvValidatorApp folder with the same name solution file in it. 
Now we need to create projects under this folder so move into this folder. 
```
cd CsvValidatorApp
```
First, we will create console type project that will be startup Client project and entry point of our app. So run following command in the command window to create it.
```
dotnet new console -o CsvValidator.Client
```
Second one will be class library type project that will contain all the functionality for loading, validating and rendering validated csv file. So run following commands in the command window to create it.
```
dotnet new classlib -o CsvValidator.Data
```
The last one will be the nunit type project for the unit testing of class library project code that can be created by running following commands in the command window
```
dotnet new nunit -o CsvValidator.Test
```

###Add Projects in the Solution
Now we need to include the projects into the solution by running following command in the command window.
```
dotnet sln CsvValidatorApp.sln add CsvValidator.Client/CsvValidator.Client.csproj CsvValidator.Data/CsvValidator.Data.csproj CsvValidator.Test/CsvValidator.Test.csproj

```

###Add Project Reference
Now we need to add reference of our class library Data project in the console app Client project. For that run following command in the command window.
```
dotnet add CsvValidator.Client/CsvValidator.Client.csproj reference CsvValidator.Data/CsvValidator.Data.csproj
```
And also add reference of class library Data project in the Test project by running following command.
```
dotnet add CsvValidator.Test/CsvValidator.Test.csproj reference CsvValidator.Data/CsvValidator.Data.csproj
```
###Build and Run Application
As we are done with all the scaffolding code creation we are now ready to build the app for the first time by running following command in the command window.
```
dotnet build CsvValidatorApp.sln
```
I am sure you won’t get any error since there is not much code in there.
You can run the app by running the console Client project and get the standard “Hello World” message in the command window. 
Run following command to run the app.
```
dotnet run -p CsvValidator.Client/CsvValidator.Client.csproj
```
or change to CsvValidator.Client folder and run following command.
```
dotnet run
```
And To run the test project, simple run following command.
```
Dotnet test CsvValidator.Test/CsvValidator.Test.csproj
```

###Start Coding the App…
Now you are ready to put flash into bare bone scaffolding code of this app and for that we need to open the code editor in the application solution folder. 
To open the VS Code in the folder, run following command.
```
code .
```
Get the source code of this app from my GitHub repository from this [link](https://github.com/sanjaysaini2000/netcore3-csvvalidator) and start adding code files and code details in your app.

###About CVS Validator App
This app take the csv file and validate the data according to the validation provided to it in an xml file and generate the validated csv file at the location of the source csv file. Both files path are configured in the app configuration file. The sample of both files are in my GitHub repository along with the source code of the app. More details about the app can be found in the README.md file in the repository as well.