Uploaded October 2025 | Updated September 2026, 1 week ago
Steps to setup, build and run C# .NET MAUI Windows apps from CLI.
Install .NET SDK version:
winget install Microsoft.DotNet.SDK.8
Install latest .NET SDK version:
winget install Microsoft.DotNet.SDK
Install maui workload (for active .NET SDK):
dotnet workload install maui
Check active .NET SDK:
dotnet --version
Check .NET SDKs installed:
dotnet --list-sdks
Check installed workloads:
dotnet workload list
New maui project:
dotnet new maui
New maui project with framework option:
dotnet new maui -f net8.0
Build command (unpackaged):
dotnet build -f net8.0-windows10.0.19041.0 -c Debug -p:WindowsPackageType=None
launchSettings.json to run without profile warning:
{
"profiles": {
"Windows Machine": {
"commandName": "MsixPackage",
"nativeDebugging": false
},
"Default": {
"commandName": "Project"
}
}
}
To change active .NET SDK in CLI, create a global.json file and
place it in current CLI directory with the full .NET version.
Then dotnet --version should show it as the active version.
{
"sdk": {
"version": "6.0.428"
}
}
Steps to setup, build and run C# .NET MAUI Windows apps from CLI.
Install .NET SDK version:
winget install Microsoft.DotNet.SDK.8
Install latest .NET SDK version:
winget install Microsoft.DotNet.SDK
Install maui workload (for active .NET SDK):
dotnet workload install maui
Check active .NET SDK:
dotnet --version
Check .NET SDKs installed:
dotnet --list-sdks
Check installed workloads:
dotnet workload list
New maui project:
dotnet new maui
New maui project with framework option:
dotnet new maui -f net8.0
Build command (unpackaged):
dotnet build -f net8.0-windows10.0.19041.0 -c Debug -p:WindowsPackageType=None
launchSettings.json to run without profile warning:
{
"profiles": {
"Windows Machine": {
"commandName": "MsixPackage",
"nativeDebugging": false
},
"Default": {
"commandName": "Project"
}
}
}
To change active .NET SDK in CLI, create a global.json file and
place it in current CLI directory with the full .NET version.
Then dotnet --version should show it as the active version.
{
"sdk": {
"version": "6.0.428"
}
}







![C# - Simulate keystrokes with SendInput (codeproject implementation)
Simulate keyboard keystrokes in Windows apps using C# SendInput function. A download from codeproject.com is used to build functions that type text, press navigation keys and extended keys.
Update 02/20/23: Delete and arrow keys called as extended keys to work with any num lock state
Update 12/2/25: In the method to type a string, I had to add a Thread.Sleep after each character to prevent faster systems from dropping characters. I suggest making that delay configurable with default of 5-10ms.
0:00 InputSender
0:13 Type characters
1:48 Navigation keys
2:35 Extended keys
InputSender Download:
https://www.codeproject.com/Articles/5264831/How-to-Send-Inputs-using-Csharp
C# Automation Playlist:
https://youtube.com/playlist?list=PLAW4P1Sb_oJbIJIQd8-HPmsVUE6Ez6NFL&si=3rb4bQHNPmHYsaXs
#csharp
Code:
private static void PressCombo(ushort code1, ushort code2)
{
InputSender.SendKeyboardInput(new InputSender.KeyboardInput[]
{
new InputSender.KeyboardInput
{
wScan = code1,
dwFlags = (uint)(InputSender.KeyEventF.KeyDown | InputSender.KeyEventF.Scancode)
},
new InputSender.KeyboardInput
{
wScan = code2,
dwFlags = (uint)(InputSender.KeyEventF.KeyDown | InputSender.KeyEventF.Scancode)
}
});
InputSender.SendKeyboardInput(new InputSender.KeyboardInput[]
{
new InputSender.KeyboardInput
{
wScan = code2,
dwFlags = (uint)(InputSender.KeyEventF.KeyUp | InputSender.KeyEventF.Scancode)
},
new InputSender.KeyboardInput
{
wScan = code1,
dwFlags = (uint)(InputSender.KeyEventF.KeyUp | InputSender.KeyEventF.Scancode)
}
});
}
private static void PressExtended(ushort code)
{
InputSender.SendKeyboardInput(new InputSender.KeyboardInput[]
{
new InputSender.KeyboardInput
{
wScan = 0xe0,
dwFlags = (uint)(InputSender.KeyEventF.ExtendedKey | InputSender.KeyEventF.Scancode),
},
new InputSender.KeyboardInput
{
wScan = code,
dwFlags = (uint)(InputSender.KeyEventF.ExtendedKey | InputSender.KeyEventF.Scancode)
}
});
} C# - Simulate keystrokes with SendInput (codeproject implementation)](https://i.ytimg.com/vi/Z7IoA8apZ8w/mqdefault.jpg)


