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