-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDirectory.Build.props
More file actions
90 lines (77 loc) · 4.11 KB
/
Copy pathDirectory.Build.props
File metadata and controls
90 lines (77 loc) · 4.11 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>
<PropertyGroup>
<!--
Versioned, not bare `net10.0-windows`: the version is what turns on the CsWinRT
projections, and without them `Windows.Media.Control` - the SMTC session manager that
Phase 7 makes the primary track source - does not exist to bind against.
22621 (Windows 11 22H2) rather than the 22000 floor: it is the oldest build still in
support, so nothing is gained by targeting below it. Offstream is Windows 11 only
(decided 2026-08-11), so this costs no supported user.
Raising this changes what the compiler generates around WinRT types, which is why the
hand-rolled IAudioPolicyConfig interop in Interop/Routing is worth re-checking after any
further move - it declares an IInspectable-based activation factory as IUnknown and
would be the first thing to break if the projections started claiming those types.
-->
<TargetFramework>net10.0-windows10.0.22621.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<LangVersion>latest</LangVersion>
<AccelerateBuildsInVisualStudio>true</AccelerateBuildsInVisualStudio>
<!--
Deliberately NOT setting <Platforms>x64</Platforms>/<PlatformTarget>x64</PlatformTarget>.
Constraining every project to x64 gained nothing - AnyCPU already runs 64-bit on 64-bit
Windows, and the shipped architecture is pinned by `dotnet publish -r win-x64` - while
breaking Visual Studio, which maps the solution's "Any CPU" configuration onto projects
that offered only Debug|x64 and Release|x64.
-->
<!--
Do NOT set InvariantGlobalization. WPF's font cache constructs CultureInfo("en")
while measuring text, which throws CultureNotFoundException in invariant mode and
kills the process at first render with no window ever appearing. It would also break
the en/fr localisation in plan §7. Verified the hard way in Phase 1.
-->
<InvariantGlobalization>false</InvariantGlobalization>
</PropertyGroup>
<!--
Version and product identity.
The git tag is the source of truth for a released version, not this file. The release
workflow reads `v1.2.3` off the tag and passes `-p:Version=1.2.3`, which overrides
VersionPrefix/VersionSuffix below - so there is no number here to remember to bump in
lockstep with a tag, and no way for the two to disagree about what shipped.
What is left here is the version an *unreleased* build reports. It says `-dev` on
purpose: a local or CI build is not a release, and a build that claims to be 0.1.0 when
it is one commit of work past it is the kind of thing that gets reported as a bug in a
version that never existed. VersionSuffix is dropped the moment Version is supplied,
which is what makes a tagged build the only one without it.
VersionPrefix does still want a nudge when a release goes out, so `-dev` builds sort
after the last release rather than before it. Nothing breaks if it is forgotten -
the shipped number is still the tag's.
-->
<PropertyGroup>
<VersionPrefix>0.2.0</VersionPrefix>
<VersionSuffix Condition="'$(Version)' == ''">dev</VersionSuffix>
<Product>Offstream</Product>
<Company>Offstream contributors</Company>
<Copyright>Copyright (c) 2026 Offstream contributors</Copyright>
<Authors>Offstream contributors</Authors>
</PropertyGroup>
<!--
Load-bearing, not preferences. The audio-routing interop uses built-in COM interop,
which NativeAOT does not support, and WPF trims poorly. See CLAUDE.md.
-->
<PropertyGroup>
<PublishAot>false</PublishAot>
<PublishTrimmed>false</PublishTrimmed>
</PropertyGroup>
<!--
Analyzers as errors (plan §9.3). Code *style* is deliberately not enforced here:
CI runs `dotnet format` in verify mode for that, which gives a fixable diff
rather than a wall of build errors.
-->
<PropertyGroup>
<EnableNETAnalyzers>true</EnableNETAnalyzers>
<AnalysisLevel>latest-recommended</AnalysisLevel>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<EnforceCodeStyleInBuild>false</EnforceCodeStyleInBuild>
</PropertyGroup>
</Project>