-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDirectory.Build.props
More file actions
109 lines (90 loc) · 4.48 KB
/
Copy pathDirectory.Build.props
File metadata and controls
109 lines (90 loc) · 4.48 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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<Project>
<!--
SharpDicom Build Configuration
Imports shared build standards with project-specific overrides:
- netstandard2.0 included for broad compatibility
- GPL-3.0-or-later license (not MIT)
- Explicit usings (not implicit)
- Source generators use .Generators suffix
-->
<!-- Target Framework Configuration -->
<!-- Main library: multi-target including netstandard2.0 -->
<PropertyGroup Condition="'$(MSBuildProjectName)' == 'SharpDicom'">
<TargetFrameworks>netstandard2.0;net8.0;net9.0;net10.0</TargetFrameworks>
</PropertyGroup>
<!-- Source Generators: must target netstandard2.0 for Roslyn compatibility -->
<PropertyGroup Condition="'$(MSBuildProjectName)' == 'SharpDicom.Generators'">
<TargetFramework>netstandard2.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<!-- Analyzers: must target netstandard2.0 for Roslyn host compatibility -->
<PropertyGroup Condition="'$(MSBuildProjectName)' == 'SharpDicom.Analyzers'">
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<!-- Tests: latest TFM, references matching library build -->
<PropertyGroup Condition="'$(MSBuildProjectName)' == 'SharpDicom.Tests'">
<TargetFramework>net10.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<!-- Polyfill Tests: net10.0 runtime but forces netstandard2.0 library reference -->
<PropertyGroup Condition="'$(MSBuildProjectName)' == 'SharpDicom.Tests.Polyfills'">
<TargetFramework>net10.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<!-- FoDicom5 Compat: multi-target matching main library -->
<PropertyGroup Condition="'$(MSBuildProjectName)' == 'SharpDicom.FoDicom5.Compat'">
<TargetFrameworks>netstandard2.0;net8.0;net9.0;net10.0</TargetFrameworks>
</PropertyGroup>
<!-- FoDicom5 Compat Tests: latest TFM -->
<PropertyGroup Condition="'$(MSBuildProjectName)' == 'SharpDicom.FoDicom5.Compat.Tests'">
<TargetFramework>net10.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<!-- FoDicom4 Compat: multi-target matching main library -->
<PropertyGroup Condition="'$(MSBuildProjectName)' == 'SharpDicom.FoDicom4.Compat'">
<TargetFrameworks>netstandard2.0;net8.0;net9.0;net10.0</TargetFrameworks>
</PropertyGroup>
<!-- FoDicom4 Compat Tests: latest TFM -->
<PropertyGroup Condition="'$(MSBuildProjectName)' == 'SharpDicom.FoDicom4.Compat.Tests'">
<TargetFramework>net10.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<!-- Migration Integration Tests: validates dcm2csv compiles against compat layer -->
<PropertyGroup Condition="'$(MSBuildProjectName)' == 'SharpDicom.Migration.Integration'">
<TargetFramework>net10.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<!-- Analyzer Tests: Roslyn analyzer and code fix testing -->
<PropertyGroup Condition="'$(MSBuildProjectName)' == 'SharpDicom.Analyzers.Tests'">
<TargetFramework>net10.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<!-- MongoDB adapter: netstandard2.1/net8.0/net9.0/net10.0 (MongoDB.Driver 3.x requires netstandard2.1+) -->
<PropertyGroup Condition="'$(MSBuildProjectName)' == 'SharpDicom.MongoDB'">
<TargetFrameworks>netstandard2.1;net8.0;net9.0;net10.0</TargetFrameworks>
</PropertyGroup>
<!-- CLI: console application targeting latest TFM -->
<PropertyGroup Condition="'$(MSBuildProjectName)' == 'SharpDicom.Cli'">
<TargetFramework>net10.0</TargetFramework>
<OutputType>Exe</OutputType>
<AssemblyName>sharpdcm</AssemblyName>
<IsPackable>false</IsPackable>
</PropertyGroup>
<!-- Import shared build standards -->
<Import Project="build-standards/Directory.Build.props.shared" />
<!-- Project-specific overrides -->
<PropertyGroup>
<!-- SharpDicom uses explicit usings for clarity -->
<ImplicitUsings>disable</ImplicitUsings>
<!-- GPL license for this project -->
<PackageLicenseExpression>GPL-3.0-or-later</PackageLicenseExpression>
<!--
Analyzer rule suppressions - INTENTIONAL design choices:
- CA1707: Underscores in names (VM_1, VM_1_N match DICOM standard)
- CA1711: Dictionary suffix (DicomDictionary, PrivateCreatorDictionary ARE dictionaries)
Note: CA1822 (instance methods as static) is suppressed locally in DicomDictionary.cs
with pragma - the instance pattern is intentional for future extensibility.
-->
<NoWarn>$(NoWarn);CA1707;CA1711</NoWarn>
</PropertyGroup>
</Project>