Setting up my development machine

  • Gérald Barré

Here's the configuration of my developer machine. I'm a .NET and web developer, so only the software relevant to these technologies are part of the list. I also add a few tools I use every day but are not directly related to dev. I'm sure I forgot some of the tools I used regularly. If you think I should add something (software/extension/configuration/services), feel free to comment.

#Web browsers

#Development

#Others

#Windows Configuration

#Online services

#Unattended installation

# Windows Features
$Features=@(
    "Client-ProjFS",
    "Containers",
    "Containers-DisposableClientVM",
    "Windows-Defender-ApplicationGuard",
    "Microsoft-Windows-Subsystem-Linux",
    "Microsoft-Hyper-V",
    "VirtualMachinePlatform"
)
Enable-WindowsOptionalFeature -FeatureName $Features -All -Online
# Windows Configuration
# Open Explorer to "This PC"
New-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "LaunchTo" -Value 1 -PropertyType DWORD -Force
# Softwares
$Softwares = @(
    "17310ICSharpCodeTeam.ILSpy",
    "NuGetPackageExplorer.NuGetPackageExplorer",
    "7zip.7zip",
    "Axosoft.GitKraken",
    "Docker.DockerDesktop",
    "Git.Git",
    "GitHub.cli",
    "Google.Chrome",
    "MarcinOtorowski.MSIXHero",
    "Microsoft.AccessibilityInsightsWindows",
    "Microsoft.AV1VideoExtension_8wekyb3d8bbwe",
    "Microsoft.AzureCLI",
    "Microsoft.AzureDataStudio",
    "Microsoft.Edge",
    "Microsoft.HEIFImageExtension_8wekyb3d8bbwe",
    "Microsoft.HEVCVideoExtensions_8wekyb3d8bbwe",
    "Microsoft.Office.OneNote_8wekyb3d8bbwe",
    "Microsoft.PowerShell",
    "Microsoft.PowerToys",
    "Microsoft.RemoteDesktop_8wekyb3d8bbwe",
    "Microsoft.SkypeApp_kzf8qxf38zg5c",
    "Microsoft.SurfaceWirelessDisplayAdapter_8wekyb3d8bbwe",
    "Microsoft.Todos_8wekyb3d8bbwe",
    "Microsoft.VP9VideoExtensions_8wekyb3d8bbwe",
    "Microsoft.WebMediaExtensions_8wekyb3d8bbwe",
    "Microsoft.WebpImageExtension_8wekyb3d8bbwe",
    "Microsoft.WinDbg_8wekyb3d8bbwe",
    "Microsoft.WindowsTerminal_8wekyb3d8bbwe",
    "Microsoft.VisualStudioCode",
    "Mozilla.Firefox",
    "Notepad++.Notepad++",
    "OpenJS.NodeJS",
    "SpotifyAB.SpotifyMusic_zpdnekdrzrea0",
    "TechSmith.Snagit",
    "TechSmith.Camtasia",
    "Telerik.Fiddler",
    "Telerik.FiddlerEverywhere",
    "VideoLAN.VLC"
)
foreach($soft in $softwares)
{
    Write-Host "Installing $soft"
    & winget install --id="$soft" --exact
}
# Open Web pages for other softwares
Start-Process "https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=enterprise&ch=pre&rel=16"
Start-Process "https://github.com/microsoft/cascadia-code/releases"
Start-Process "https://github.com/KirillOsenkov/MSBuildStructuredLog/releases/"
Start-Process "https://marketplace.visualstudio.com/items?itemName=MadsKristensen.BasicEssentials"
Start-Process "https://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.ProjectSystemTools"
Start-Process "https://marketplace.visualstudio.com/items?itemName=ms-madsk.ProjectFileTools"
Start-Process "https://www.jetbrains.com/profiler/"
Start-Process "https://www.jetbrains.com/dotmemory/"
Start-Process "https://www.jetbrains.com/decompiler/"
# Install dotnet dev certificate
dotnet dev-certs https --clean && dotnet dev-certs https --trust

# PowerShell configuration
Install-Module PSReadLine -Force
exit
# PowerShell configuration
# https://devblogs.microsoft.com/powershell/announcing-psreadline-2-1-with-predictive-intellisense/
Set-PSReadLineOption -PredictionSource History
Set-PSReadLineOption -PredictionViewStyle ListView

# Create PowerShell profile
# https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7.1#how-to-create-a-profile
if (!(Test-Path -Path $PROFILE)) {
  New-Item -ItemType File -Path $PROFILE -Force

  # PowerShell parameter completion shim for the dotnet CLI
  Add-Content -Path $Profile -Value '
Register-ArgumentCompleter -Native -CommandName dotnet -ScriptBlock {
    param($commandName, $wordToComplete, $cursorPosition)
        dotnet complete --position $cursorPosition "$wordToComplete" | ForEach-Object {
            [System.Management.Automation.CompletionResult]::new($_, $_, ''ParameterValue'', $_)
        }
}'
}

Do you have a question or a suggestion about this post? Contact me!

Follow me:
Enjoy this blog?Buy Me A Coffee