Repository navigation
Expand file tree
/
Copy pathDirectory.Build.props
More file actions
90 lines (78 loc) · 3.92 KB
/
Copy pathDirectory.Build.props
File metadata and controls
90 lines (78 loc) · 3.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<Project>
<!--
Shared build defaults for every project in the solution (modular solution
structure design). Projects only restate one of these when they genuinely
differ: the MAUI heads override TargetFramework with their platform TFM,
because MSBuild imports this file before the project body.
Package versions are not here — they live in Directory.Packages.props.
-->
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<LangVersion>latest</LangVersion>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<PropertyGroup>
<!--
The warning policy. The rule severities live in the root .editorconfig;
these switch the analyzers on and make the build report them. The build
is kept at zero warnings, and the pull request workflow passes
TreatWarningsAsErrors so it stays there — set on the command line rather
than here, so a half-finished local edit still builds and runs.
-->
<AnalysisLevel>latest</AnalysisLevel>
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
<Deterministic>true</Deterministic>
<!--
Switches over DevToolKind, DevToolProvider and the other closed enums
have no catch-all arm, because a catch-all files a member nobody has
thought about under an answer meant for something else: the DevPc key
routing once defaulted an unrecognised kind to "MCP server".
CS8509 (a named member no arm covers) is an error: adding a member
without handling it in every switch fails the build.
CS8524 (the (DevToolKind)7 an int cast can produce, which no exhaustive
switch can name) is off: guarding it is exactly what a catch-all
arm would be for, and it only arises from a cast of a value the
formats have no way to express.
Set once here rather than in each project that switches, so a project
cannot opt out by forgetting it.
-->
<WarningsAsErrors>$(WarningsAsErrors);CS8509</WarningsAsErrors>
<NoWarn>$(NoWarn);CS8524</NoWarn>
</PropertyGroup>
<!-- On a runner only: it maps the source paths in the PDBs, which a debugger
on a developer's machine then cannot resolve. -->
<PropertyGroup Condition="'$(GITHUB_ACTIONS)' == 'true'">
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
</PropertyGroup>
<PropertyGroup>
<!--
Every project commits a packages.lock.json, and the pull request and
nightly runs restore Backlog.WithoutAppHeads.slnf with locked-mode, so a
package that resolves differently from the committed file fails the run
rather than building (issue #748). A local restore still rewrites the
files: commit them with the package change that moved them.
The exception is the two MAUI heads, Backlog.Desktop and Backlog.Mobile,
which opt out in their own project files: their restore graph changes
with the runtime identifier each workflow passes. A known constraint:
the Aspire AppHost's lock file names no runtime identifier only because
the AppHost sets AspireUseCliBundle. With it off, the AppHost SDK adds
Aspire.Dashboard.Sdk and Aspire.Hosting.Orchestration packages for the
restoring machine's own runtime identifier, and the lock file would then
match only machines of that kind (win-x64 for the windows-latest runners
and the developer machines).
-->
<RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
</PropertyGroup>
<PropertyGroup>
<Company>JSdotNet</Company>
<Product>Backlog</Product>
<Copyright>Copyright © JSdotNet 2026</Copyright>
</PropertyGroup>
<PropertyGroup>
<!-- The MAUI heads and Microsoft.Maui.Core in ServiceDefaults must move in
lockstep, so the workload version is a property rather than three
separately maintained package versions. -->
<MauiVersion>10.0.110</MauiVersion>
</PropertyGroup>
</Project>