# Development Environment Setup in VS Code
Call me grizzled old man, but I do not like to use [full Visual Studio](https://help.quantower.com/quantower/quantower-algo/installing-visual-studio) environment for my coding work. Here is the setup for VS Code projects for Quantower, so you can build your own as well.
### Prerequisites
- [VS Code](https://code.visualstudio.com/) - obviously
- [.NET SDK](https://dotnet.microsoft.com/en-us/download) - you should probably have this already
- [C# Dev Kit Extension](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csdevkit) - so VS Code can understand C#
- [C# Base language support Extension](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp) - I *think* this is a prereq for C# Dev Kit and will install automatically
- [Polyglot Notebooks Extension](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.dotnet-interactive-vscode) - optional, but really recommended for tinkering with C# code
### Installation Steps
1. Create a new `myIndicator.csproj` file in a directory of your choice - it doesn't have to be anywhere in Quantower directory structure
2. Add all standard elements to `myIndicator.csproj`
3. We need to tell dotnet compiler how to find `TradingPlatform.BusinessLayer.dll` assembly. it is hiding deep in the bowels of Quantower directory structure, including an ever-changing version directory. Luckily msbuild magick can help:
``` XML
D:\Quantower$([System.IO.Directory]::GetDirectories("$(QuantowerRoot)\TradingPlatform", "v1*")[0])$(QuantowerPath)\bin\TradingPlatform.BusinessLayer.dll
TradingPlatform.BusinessLayer.xml
```
4. Each time dotnet compiler creates a new dll assembly, we need to copy it to the `.\Scripts\Indicatiors` directory so Quantower can use it. Let's automate this with a post-build event in our `myIndicator.csproj`:
``` xml
```
Below is a sample complete `.csproj` file for a Quantower indicator - it should allow building the .dll assembly and copying it to Quantower structure with `dotnet build` command:
``` xml
en-USnet8.0enableenabletruepreviewfalsefalsetrueAnyCPUFalsebin\$(Configuration)\FalsefulltruetruetruesnupkgAnyCPUD:\Quantower$([System.IO.Directory]::GetDirectories("$(QuantowerRoot)\TradingPlatform", "v1*")[0])$(QuantowerPath)\bin\TradingPlatform.BusinessLayer.dll
TradingPlatform.BusinessLayer.xml
```