# 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-US net8.0 enable enable true preview false false true AnyCPU False bin\$(Configuration)\ False full true true true snupkg AnyCPU D:\Quantower $([System.IO.Directory]::GetDirectories("$(QuantowerRoot)\TradingPlatform", "v1*")[0]) $(QuantowerPath)\bin\TradingPlatform.BusinessLayer.dll TradingPlatform.BusinessLayer.xml ```