Skip to main content
Version: Cloud (SaaS)

.NET

Semaphore Ubuntu images include the .NET SDK and PowerShell.

This page shows how to inspect installed versions, build .NET projects, and run tests.

Check installed versions

Use the following commands to inspect available .NET and PowerShell versions:

dotnet --info
dotnet --list-sdks
dotnet --list-runtimes
pwsh --version

Build a .NET project

The following example restores dependencies and builds a project in Release mode:

version: v1.0
name: .NET pipeline
agent:
machine:
type: f1-standard-2
os_image: ubuntu2404
blocks:
- name: Build
task:
jobs:
- name: Build application
commands:
- checkout
- dotnet --info
- dotnet restore
- dotnet build --configuration Release --no-restore

Run tests

Use dotnet test to execute your test suite:

version: v1.0
name: .NET tests
agent:
machine:
type: f1-standard-2
os_image: ubuntu2404
blocks:
- name: Test
task:
jobs:
- name: Run tests
commands:
- checkout
- dotnet restore
- dotnet build --configuration Release --no-restore
- dotnet test --configuration Release --no-build

Use PowerShell

PowerShell is available as pwsh.

Example:

version: v1.0
name: .NET with PowerShell
agent:
machine:
type: f1-standard-2
os_image: ubuntu2404
blocks:
- name: Run PowerShell
task:
jobs:
- name: PowerShell script
commands:
- checkout
- pwsh -Command "Get-ChildItem"
- pwsh -File ./scripts/build.ps1

Build and test in one pipeline

The following pipeline restores dependencies, builds the application, and runs tests:

version: v1.0
name: .NET example
agent:
machine:
type: f1-standard-2
os_image: ubuntu2404
blocks:
- name: Build and test
task:
jobs:
- name: .NET
commands:
- checkout
- dotnet --info
- dotnet restore
- dotnet build --configuration Release --no-restore
- dotnet test --configuration Release --no-build

Example using a solution file

If your repository contains a solution file, you can target it explicitly:

dotnet restore MyApp.sln
dotnet build MyApp.sln --configuration Release --no-restore
dotnet test MyApp.sln --configuration Release --no-build