Skip to content

Commit b9b6aad

Browse files
committed
Clarify that MSBuild is required in most cases
1 parent 49e5329 commit b9b6aad

File tree

7 files changed

+66
-49
lines changed

7 files changed

+66
-49
lines changed

build/docs/00-SUMMARY.md

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,8 @@ dotnet build MyGame.Windows.csproj -p:StrideGraphicsApis=Vulkan
141141

142142
### Build engine with single API (fast development)
143143
```bash
144-
dotnet build build\Stride.sln -p:StrideGraphicsApis=Direct3D11 -p:StrideSkipUnitTests=true
144+
# Note: Use msbuild (not dotnet build) as the engine contains C++/CLI projects
145+
msbuild build\Stride.sln -p:StrideGraphicsApis=Direct3D11 -p:StrideSkipUnitTests=true
145146
```
146147

147148
### Full official build (all APIs)
@@ -172,6 +173,10 @@ dotnet build sources\core\Stride.Core\Stride.Core.csproj
172173
- `sources/targets/Stride.targets` - Version replacement, shader generation
173174
- `sources/targets/Stride.GraphicsApi.Dev.targets` - Graphics API inner builds
174175

176+
## Important: MSBuild vs dotnet build
177+
178+
> **The Stride engine contains C++/CLI projects that require `msbuild` to build.** Use `msbuild` (not `dotnet build`) for building the full engine/editor solutions (`build\Stride.sln`). Individual Core library projects and game projects can use `dotnet build`.
179+
175180
## For New Contributors
176181

177182
**Start here:**
@@ -219,14 +224,14 @@ Create `Directory.Build.props` in repository root:
219224

220225
**Testing changes:**
221226
```bash
222-
# Test all platforms (if possible)
223-
dotnet build build\Stride.sln -f:net10.0 # Desktop
224-
dotnet build build\Stride.sln -f:net10.0-android # Android
225-
dotnet build build\Stride.sln -f:net10.0-ios # iOS
227+
# Test all platforms (if possible) - use msbuild for full engine
228+
msbuild build\Stride.sln -f:net10.0 # Desktop
229+
msbuild build\Stride.sln -f:net10.0-android # Android
230+
msbuild build\Stride.sln -f:net10.0-ios # iOS
226231

227232
# Test all Graphics APIs
228-
dotnet build build\Stride.sln -p:StrideGraphicsApis=Direct3D11
229-
dotnet build build\Stride.sln -p:StrideGraphicsApis=Vulkan
233+
msbuild build\Stride.sln -p:StrideGraphicsApis=Direct3D11
234+
msbuild build\Stride.sln -p:StrideGraphicsApis=Vulkan
230235

231236
# Test full build
232237
msbuild build\Stride.build -t:BuildWindows

build/docs/01-build-system-overview.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
## Introduction
44

55
The Stride game engine uses a complex MSBuild-based build system designed to support:
6+
7+
> **Important Note:** The Stride engine contains C++/CLI projects (for native library interop) that require **`msbuild`** to build. When building the full engine or editor solutions, you must use `msbuild`, not `dotnet build`. However, individual Core library projects and game projects can use `dotnet build`.
68
- **6 platforms**: Windows, Linux, macOS, Android, iOS, and UWP
79
- **5 graphics APIs**: Direct3D 11, Direct3D 12, OpenGL, OpenGLES, and Vulkan
810
- **Cross-compilation**: Build for different platforms from a single host

build/docs/04-build-scenarios.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
This document provides practical examples of common build scenarios in Stride.
44

5+
> **Important:** The Stride engine contains C++/CLI projects that require **`msbuild`** to build. Use `msbuild` for building the full engine/editor solutions (`build\Stride.sln`, etc.). You can use `dotnet build` for individual Core library projects or game projects.
6+
57
## Table of Contents
68

79
- [Quick Reference](#quick-reference)

build/docs/05-developer-workflow.md

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
Tips and best practices for efficient daily development on the Stride game engine.
44

5+
> **Important:** The Stride engine contains C++/CLI projects that require **`msbuild`** to build. Use `msbuild` for building the full engine/editor solutions (`build\Stride.sln`, etc.). You can use `dotnet build` for individual Core library projects or game projects.
6+
57
## Table of Contents
68

79
- [Initial Setup](#initial-setup)
@@ -25,8 +27,8 @@ cd stride
2527
dotnet restore build\Stride.sln
2628

2729
# Initial build (choose fastest option for your platform)
28-
# Windows:
29-
dotnet build build\Stride.sln -p:StrideGraphicsApis=Direct3D11 -p:StrideSkipUnitTests=true
30+
# Windows (use msbuild due to C++/CLI projects):
31+
msbuild build\Stride.sln -p:StrideGraphicsApis=Direct3D11 -p:StrideSkipUnitTests=true
3032

3133
# Linux:
3234
dotnet build build/Stride.sln -p:StrideGraphicsApis=OpenGL -p:StrideSkipUnitTests=true
@@ -73,8 +75,8 @@ git pull origin main
7375
# 2. Restore (only if .csproj changed)
7476
dotnet restore build\Stride.sln
7577

76-
# 3. Build (incremental)
77-
dotnet build build\Stride.sln --no-restore
78+
# 3. Build (incremental, use msbuild for full engine)
79+
msbuild build\Stride.sln --no-restore
7880
```
7981

8082
### Working on Specific Project
@@ -91,8 +93,8 @@ dotnet build sources\engine\Stride.Graphics\Stride.Graphics.csproj --no-dependen
9193

9294
```bash
9395
# Clean and rebuild
94-
dotnet clean build\Stride.sln
95-
dotnet build build\Stride.sln
96+
msbuild build\Stride.sln -t:Clean
97+
msbuild build\Stride.sln
9698
```
9799

98100
### Update NuGet Packages
@@ -124,11 +126,11 @@ export StrideGraphicsApis=Vulkan
124126
### Switch APIs Temporarily
125127

126128
```bash
127-
# Build with specific API
128-
dotnet build build\Stride.sln -p:StrideGraphicsApis=Direct3D12
129+
# Build with specific API (use msbuild for full engine)
130+
msbuild build\Stride.sln -p:StrideGraphicsApis=Direct3D12
129131

130132
# Back to your default
131-
dotnet build build\Stride.sln
133+
msbuild build\Stride.sln
132134
```
133135

134136
### Test Multiple APIs
@@ -140,7 +142,7 @@ dotnet build build\Stride.sln
140142
$apis = "Direct3D11", "Direct3D12", "Vulkan", "OpenGL"
141143
foreach ($api in $apis) {
142144
Write-Host "Testing $api..." -ForegroundColor Green
143-
dotnet build build\Stride.sln -p:StrideGraphicsApis=$api
145+
msbuild build\Stride.sln -p:StrideGraphicsApis=$api
144146
dotnet test build\Stride.sln -p:StrideGraphicsApis=$api --no-build
145147
}
146148
```
@@ -166,7 +168,7 @@ Create `Directory.Build.props` as shown in [Initial Setup](#initial-setup).
166168
**Solution 3: Command line**
167169

168170
```bash
169-
dotnet build build\Stride.sln -p:StrideDefaultGraphicsApiDesignTime=Vulkan
171+
msbuild build\Stride.sln -p:StrideDefaultGraphicsApiDesignTime=Vulkan
170172
```
171173

172174
Then reload solution in Visual Studio.
@@ -254,7 +256,7 @@ git tag v4.3.0.2
254256
git push origin v4.3.0.2
255257

256258
# Rebuild to update version
257-
dotnet build build\Stride.sln
259+
msbuild build\Stride.sln
258260
```
259261

260262
### Create NuGet Package Locally
@@ -281,7 +283,7 @@ build.bat # or build.sh on Linux
281283
copy lib\* ..\..\Bin\Windows\
282284

283285
# Rebuild engine
284-
dotnet build build\Stride.sln
286+
msbuild build\Stride.sln
285287
```
286288

287289
### Regenerate Solution Files
@@ -450,17 +452,17 @@ Console.WriteLine("Compiled with Direct3D 11 support");
450452

451453
```bash
452454
# Use all CPU cores
453-
dotnet build build\Stride.sln -m
455+
msbuild build\Stride.sln -m
454456

455457
# Limit to 4 cores (if thermal throttling)
456-
dotnet build build\Stride.sln -m:4
458+
msbuild build\Stride.sln -m:4
457459
```
458460

459461
### Incremental Builds
460462

461463
```bash
462464
# Skip restore if no package changes
463-
dotnet build build\Stride.sln --no-restore
465+
msbuild build\Stride.sln --no-restore
464466

465467
# Skip dependency checks (dangerous!)
466468
dotnet build MyProject.csproj --no-dependencies
@@ -479,10 +481,10 @@ Use a persistent build cache:
479481

480482
```bash
481483
# Minimal output (faster, harder to debug)
482-
dotnet build build\Stride.sln -v:q
484+
msbuild build\Stride.sln -v:q
483485

484486
# Normal (default)
485-
dotnet build build\Stride.sln -v:n
487+
msbuild build\Stride.sln -v:n
486488
```
487489

488490
## Workflow Aliases (PowerShell)
@@ -491,8 +493,9 @@ Add to your PowerShell profile (`$PROFILE`):
491493

492494
```powershell
493495
# Stride build aliases
496+
# Note: Use msbuild due to C++/CLI projects
494497
function Stride-Build {
495-
dotnet build build\Stride.sln -p:StrideGraphicsApis=Direct3D11 -p:StrideSkipUnitTests=true
498+
msbuild build\Stride.sln -p:StrideGraphicsApis=Direct3D11 -p:StrideSkipUnitTests=true
496499
}
497500
498501
function Stride-Build-All {
@@ -522,7 +525,8 @@ Add to `~/.bashrc` or `~/.zshrc`:
522525

523526
```bash
524527
# Stride build aliases
525-
alias stride-build='dotnet build build/Stride.sln -p:StrideGraphicsApis=OpenGL -p:StrideSkipUnitTests=true'
528+
# Note: Use msbuild due to C++/CLI projects
529+
alias stride-build='msbuild build/Stride.sln -p:StrideGraphicsApis=OpenGL -p:StrideSkipUnitTests=true'
526530
alias stride-build-all='msbuild build/Stride.build -t:BuildLinux'
527531
alias stride-clean='dotnet clean build/Stride.sln'
528532
alias stride-test='dotnet test build/Stride.sln --no-build'
@@ -564,8 +568,8 @@ dotnet restore build\Stride.sln --force
564568

565569
```bash
566570
# Clean build
567-
dotnet clean build\Stride.sln
568-
dotnet build build\Stride.sln
571+
msbuild build\Stride.sln -t:Clean
572+
msbuild build\Stride.sln
569573
```
570574

571575
## Best Practices

build/docs/06-troubleshooting.md

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ Run these commands when encountering issues:
2121
# 1. Check configuration
2222
dotnet build MyProject.csproj -t:StrideDiagnostics
2323

24-
# 2. Clean build
25-
dotnet clean build\Stride.sln
26-
dotnet build build\Stride.sln
24+
# 2. Clean build (use msbuild for full engine)
25+
msbuild build\Stride.sln -t:Clean
26+
msbuild build\Stride.sln
2727

2828
# 3. Force restore
2929
dotnet restore build\Stride.sln --force
@@ -88,9 +88,11 @@ error MSB4126: The specified solution configuration "Release|Mixed Platforms" is
8888
**Solution:**
8989

9090
```bash
91-
# Use dotnet msbuild (recommended)
92-
dotnet --version # Check .NET SDK version
93-
dotnet build build\Stride.sln
91+
# Check .NET SDK version
92+
dotnet --version
93+
94+
# Use msbuild (required for C++/CLI projects)
95+
msbuild build\Stride.sln
9496

9597
# Or use latest MSBuild
9698
"C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe" build\Stride.sln
@@ -123,8 +125,8 @@ grep -i "error" build.log | head -20
123125

124126
```bash
125127
# 1. Clean and rebuild
126-
dotnet clean build\Stride.sln
127-
dotnet build build\Stride.sln
128+
msbuild build\Stride.sln -t:Clean
129+
msbuild build\Stride.sln
128130

129131
# 2. Disable assembly processor temporarily (for diagnosis)
130132
dotnet build MyProject.csproj -p:StrideAssemblyProcessor=false
@@ -386,8 +388,8 @@ sudo apt-get install libx11-dev libxrandr-dev libxi-dev
386388
# Fedora/RHEL
387389
sudo dnf install libX11-devel libXrandr-devel libXi-devel
388390

389-
# Then rebuild
390-
dotnet build build/Stride.sln
391+
# Then rebuild (use msbuild for full engine)
392+
msbuild build/Stride.sln
391393
```
392394

393395
## NuGet and Restore Issues
@@ -505,23 +507,23 @@ grep "Time Elapsed" build.log | sort -k3 -rn | head -10
505507
1. **Building all Graphics APIs:**
506508

507509
```bash
508-
# Build single API only
509-
dotnet build build\Stride.sln -p:StrideGraphicsApis=Direct3D11
510+
# Build single API only (use msbuild for full engine)
511+
msbuild build\Stride.sln -p:StrideGraphicsApis=Direct3D11
510512
# ~5x faster
511513
```
512514

513515
2. **Unit tests running:**
514516

515517
```bash
516518
# Skip unit tests
517-
dotnet build build\Stride.sln -p:StrideSkipUnitTests=true
519+
msbuild build\Stride.sln -p:StrideSkipUnitTests=true
518520
```
519521

520522
3. **Building unnecessary projects:**
521523

522524
```bash
523-
# Use solution filter
524-
dotnet build build\Stride.Runtime.slnf # Only runtime projects
525+
# Use solution filter (use msbuild for engine builds)
526+
msbuild build\Stride.Runtime.slnf
525527
```
526528

527529
4. **Antivirus scanning:**
@@ -591,8 +593,8 @@ dotnet restore build\Stride.sln
591593
rm -rf .vs # or rmdir /s /q .vs on Windows
592594

593595
# 2. Rebuild project
594-
dotnet clean build\Stride.sln
595-
dotnet build build\Stride.sln
596+
msbuild build\Stride.sln -t:Clean
597+
msbuild build\Stride.sln
596598

597599
# 3. Reload solution in Visual Studio
598600

build/docs/07-improvement-proposals.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -411,11 +411,11 @@ grep -r "StrideObsolete" build/ sources/targets/
411411
**Usage:**
412412

413413
```bash
414-
# Dev build (fast)
415-
dotnet build build\Stride.sln
414+
# Dev build (fast, use msbuild for full engine)
415+
msbuild build\Stride.sln
416416

417417
# CI build (thorough)
418-
dotnet build build\Stride.sln -p:StrideBuildProfile=CI
418+
msbuild build\Stride.sln -p:StrideBuildProfile=CI
419419
```
420420

421421
**Benefits:**

build/docs/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ This directory contains comprehensive documentation about the Stride build syste
1919

2020
## Quick Start
2121

22+
> **Important:** The Stride engine contains C++/CLI projects that require **`msbuild`** to build. Use `msbuild` for building the full engine/editor (`build\Stride.sln`). You can use `dotnet build` for individual Core library projects or game projects.
23+
2224
### Full Windows Build
2325
```bash
2426
msbuild build\Stride.build -t:BuildWindows -m:1 -nr:false -v:m -p:StrideSkipUnitTests=true

0 commit comments

Comments
 (0)