Repository navigation
Expand file tree
/
Copy pathDirectory.Build.props
More file actions
212 lines (198 loc) · 13.5 KB
/
Copy pathDirectory.Build.props
File metadata and controls
212 lines (198 loc) · 13.5 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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
<Project ToolsVersion="latest" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildThisFileDirectory)TargetFrameworks.props" />
<!-- Key properties -->
<PropertyGroup>
<RepoRoot>$([MSBuild]::EnsureTrailingSlash('$(MSBuildThisFileDirectory)'))</RepoRoot>
<SolutionDir Condition="$(SolutionDir) == ''">$(RepoRoot)</SolutionDir>
<Authors>Actual Chat, Inc.</Authors>
<Company>Actual Chat, Inc.</Company>
<Copyright>Copyright Alex Yakunin, Actual Chat, Inc., ServiceTitan, Inc.</Copyright>
</PropertyGroup>
<!-- Multitargeting -->
<PropertyGroup Condition="'$(UseMultitargeting)' == ''">
<UseMultitargeting>false</UseMultitargeting>
<!-- <UseMultitargeting>true</UseMultitargeting>-->
<TargetFramework Condition="!$(UseMultitargeting)">$(LatestTargetFramework)</TargetFramework>
</PropertyGroup>
<!-- Common properties -->
<PropertyGroup>
<ProjectKind>Other</ProjectKind>
<IsServerSideProject>false</IsServerSideProject>
</PropertyGroup>
<PropertyGroup Condition="'$(MSBuildProjectExtension)' == '.csproj'">
<ProjectKind Condition="$(MSBuildProjectName.Contains('.EntityFramework'))">EntityFramework</ProjectKind>
<ProjectKind Condition="$(MSBuildProjectName.Contains('.Redis'))">Redis</ProjectKind>
<ProjectKind Condition="$(MSBuildProjectName.Contains('.Server'))">Server</ProjectKind>
<ProjectKind Condition="$(MSBuildProjectName.Contains('.Ext.Services'))">Server</ProjectKind>
<ProjectKind Condition="$(MSBuildProjectName.Contains('.Tests'))">Tests</ProjectKind>
<IsServerSideProject Condition="'$(ProjectKind)' == 'EntityFramework'">true</IsServerSideProject>
<IsServerSideProject Condition="'$(ProjectKind)' == 'Redis'">true</IsServerSideProject>
<IsServerSideProject Condition="'$(ProjectKind)' == 'Server'">true</IsServerSideProject>
<IsServerSideProject Condition="'$(ProjectKind)' == 'Tests'">true</IsServerSideProject>
</PropertyGroup>
<!-- Output paths -->
<PropertyGroup>
<UseArtifactsOutput>true</UseArtifactsOutput>
<ArtifactsPath>$(RepoRoot)artifacts</ArtifactsPath>
<PackageOutputPath>$(RepoRoot)artifacts\nupkg</PackageOutputPath>
<AppendTargetFrameworkToOutputPath>true</AppendTargetFrameworkToOutputPath>
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
</PropertyGroup>
<!-- Defaults for .csproj -->
<PropertyGroup>
<OutputType>Library</OutputType>
<LangVersion>preview</LangVersion>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<Features>strict</Features>
</PropertyGroup>
<!-- Codegen & trimming options -->
<PropertyGroup>
<IsTrimmable>false</IsTrimmable>
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
<IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
<NoDefaultLaunchSettingsFile>true</NoDefaultLaunchSettingsFile>
</PropertyGroup>
<!-- Packaging -->
<PropertyGroup>
<PackageProjectUrl>https://fusion.actuallab.net/</PackageProjectUrl>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<RepositoryType>git</RepositoryType>
<RepositoryUrl>https://github.com/ActualLab/Fusion</RepositoryUrl>
<PackageTags>actual_chat actual_lab actual_lab_fusion</PackageTags>
<Description>A part of ActualLab.Fusion - an end-to-end reactive state sync and RPC framework for .NET and Blazor.</Description>
<PackageIcon>Logo128.jpg</PackageIcon>
<GenerateDocumentationFile>false</GenerateDocumentationFile>
<NoPackageAnalysis>false</NoPackageAnalysis>
<DefaultLanguage>en-US</DefaultLanguage>
<SatelliteResourceLanguages>en</SatelliteResourceLanguages>
<!-- Embedded not recommended yet for libs and nupkg, track this in https://github.com/dotnet/sdk/issues/2679 -->
<!-- Also embedded doesn't work with dotnet pack without nuspec or IncludeBuildOutput = false -->
<DebugType>portable</DebugType>
<DebugSymbols>true</DebugSymbols>
<GenerateFullPaths Condition="'$(TERM_PROGRAM)' == 'vscode'">true</GenerateFullPaths>
</PropertyGroup>
<!-- NuGet package icon, referenced by PackageIcon above and packed into every package. -->
<ItemGroup>
<None Include="$(MSBuildThisFileDirectory)docs\img\Logo128.jpg" Pack="true" PackagePath="" Visible="false" />
</ItemGroup>
<!-- Analyzers & warnings -->
<PropertyGroup>
<NoLogo>true</NoLogo>
<AnalysisMode>AllEnabledByDefault</AnalysisMode>
<AnalysisLevel>preview</AnalysisLevel>
<EnableNETAnalyzers>true</EnableNETAnalyzers>
<EnableTrimAnalyzer>true</EnableTrimAnalyzer>
<SuppressNETCoreSdkPreviewMessage>true</SuppressNETCoreSdkPreviewMessage>
<SuppressTfmSupportBuildWarnings>true</SuppressTfmSupportBuildWarnings>
<WarningLevel>4</WarningLevel>
<!-- NETSDK1057: You're using a preview version of .NET -->
<NoWarn>$(NoWarn);NETSDK1057</NoWarn>
<!-- NuGet & libraries / frameworks -->
<!-- NU1603: Approximate best match for X was resolved -->
<!-- NU1901-1904: Package 'X' has a known severity vulnerability -->
<!-- NU5105: The package version uses SemVer 2.0.0 or components of SemVer 1.0.0 that are not supported on legacy clients -->
<!-- NETSDK1138: The target framework 'net5.0' is out of support. -->
<NoWarn>$(NoWarn);NU1603;NU1901;NU1902;NU1903;NU1904;NU5105;NETSDK1138</NoWarn>
<!-- Roslyn analyzers' suppressions (some of these are errors, not just warnings) -->
<!-- MsgPack006: False positive error on open generic [MessagePackFormatter] types.
The source generator can't validate IMessagePackFormatter on unbound generic types
(Roslyn returns empty AllInterfaces for unbound generics).
See: https://github.com/dotnet/roslyn/issues/66512 -->
<NoWarn>$(NoWarn);MsgPack006</NoWarn>
<!-- C# -->
<!-- CA1062: Validate arguments of public methods -->
<!-- CS1591: Missing XML comment for publicly visible type or member -->
<!-- CA1873: Evaluation of this argument may be expensive and unnecessary if logging is disabled -->
<!-- CA2254: The logging message template should not vary between calls ... -->
<!-- CA2263: Prefer the generic overload ... -->
<!-- CS8669: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. Auto-generated code requires an explicit '#nullable' directive in source. -->
<NoWarn>$(NoWarn);CA1062;CS1591;CA1873;CA2254;CA2263;CS8669</NoWarn>
<!-- MA0009: Regular expressions should not be vulnerable to Denial of Service attacks -->
<!-- MA0018: Do not declare static members on generic types -->
<!-- MA0048: File name must match type name -->
<!-- MA0084: Local variable 'v' should not hide parameter - buggy reporting for primary constructors -->
<!-- RCS1047: Non-asynchronous method name should not end with 'Async' -->
<!-- VSTHRD003: Avoid awaiting or returning a Task representing work that was not start ed within your context as that can lead to deadlocks. -->
<!-- VSTHRD103: StateHasChanged synchronously blocks. Await NotifyStateHasChanged instead. -->
<!-- VSTHRD110: Observe the awaitable result of this method call by awaiting it, assigning to a variable, or passing it to another method. -->
<NoWarn>$(NoWarn);MA0009;MA0018;MA0048;MA0084;RCS1047;VSTHRD003;VSTHRD103;VSTHRD110</NoWarn>
<!-- New .NET 8 warnings -->
<!-- CA1001: Type C owns disposable field(s) F but is not disposable -->
<!-- CA1002: Change 'List<T>' in P to use 'Collection<T>', 'ReadOnlyCollection<T>' or 'KeyedCollection<K,V>' -->
<!-- CA1003: Change the event X to replace the type 'System.Action<T, T>?' with a generic EventHandler -->
<!-- CA1030: Consider making 'XxxChanged' an event -->
<!-- CA1031: Modify 'ApplyMauiOSData' to catch a more specific allowed exception type, or rethrow the exception -->
<!-- CA1033: Make C sealed (a breaking change if this class has previously shipped), implement the method non-explicitly, or implement a new method that exposes the functionality of M and is visible to derived classes -->
<!-- CA1034: Do not nest type X. Alternatively, change its accessibility so that it is not externally visible. -->
<!-- CA1040: Avoid empty interfaces -->
<!-- CA1043: Use Integral Or String Argument For Indexers -->
<!-- CA1051: Do not declare visible instance fields -->
<!-- CA1054: Change the type of parameter 'url' of method M from 'string' to 'System.Uri' -->
<!-- CA1055: Change the return type of method 'M' from 'string' to 'System.Uri' -->
<!-- CA1056: Change the type of property 'HostInfo.BaseUrl' from 'string' to 'System.Uri' -->
<!-- CA1063: Provide an overridable implementation of Dispose(bool) on 'CompositeServiceProvider' or mark the type as sealed. -->
<!-- CA1065: X returns an exception of type Exception -->
<!-- CA1308: Replace the call to 'ToLowerInvariant' with 'ToUpperInvariant' -->
<!-- CA1508: someVar != null is always 'false' - !!! Gives too many false positives -->
<!-- CA1510: Use 'ArgumentNullException.ThrowIfNull' instead of explicitly throwing a new exception instance -->
<!-- CA1707: Remove the underscores from type name -->
<!-- CA1711: Rename type name MacNotificationsPermission so that it does not end in 'Permission' -->
<!-- CA1720: Identifier 'Long' contains type name -->
<!-- CA1724: The type name C conflicts in whole or in part with the namespace name N. -->
<!-- CA1725: In member M, change parameter name P to P1 in order to match the identifier as it has been declared in ... -->
<!-- CA1802: Field 'CheckCount' is declared as 'readonly' but is initialized with a constant value. -->
<!-- CA1805: Member 'F' is explicitly initialized to its default value -->
<!-- CA1810: Initialize all static fields in C when those fields are declared and remove the explicit static constructor -->
<!-- CA1815: Struct C should override Equals -->
<!-- CA1816: Change Dispose() to call GC.SuppressFinalize(object) -->
<!-- CA1819: Properties should not return arrays -->
<!-- CA1848: For improved performance, use the LoggerMessage delegates instead of calling ... -->
<!-- CA1859: Change return type of method M from TBase to T for improved performance -->
<!-- CA2000: Call System.IDisposable.Dispose on object created by ... before all references to it are out of scope -->
<!-- CA2213: C contains field F that is of IDisposable type, but it is never disposed -->
<!-- CA2225: Provide a method named 'M' as an alternate for operator op_Implicit -->
<!-- CA2234: Modify M to call 'PostAsync(Uri,...)' instead of 'PostAsync(string, ...)' -->
<!-- CA5394: Random is an insecure random number generator -->
<NoWarn>$(NoWarn);CA1001;CA1002;CA1003;CA1030;CA1031;CA1033;CA1034;CA1040;CA1043</NoWarn>
<NoWarn>$(NoWarn);CA1051;CA1054;CA1055;CA1056;CA1063;CA1065;CA1308;CA1508;CA1510</NoWarn>
<NoWarn>$(NoWarn);CA1707;CA1711;CA1720;CA1724;CA1725</NoWarn>
<NoWarn>$(NoWarn);CA1802;CA1805;CA1810;CA1815;CA1816;CA1819;CA1848;CA1859</NoWarn>
<NoWarn>$(NoWarn);CA2000;CA2213;CA2225;CA2234;CA5394</NoWarn>
<!-- Extra warnings special for Fusion -->
<!-- CA1000: Do not declare static members on generic types -->
<!-- CA1512: Use 'XxxException.ThrowIf' instead of ... -->
<!-- CA1513: Use 'ObjectDisposedException.ThrowIf' instead of explicitly throwing a new exception instance -->
<!-- CA1710: Rename XxxWhatever to end in either 'Collection' or 'Dictionary', 'Set', 'Stack', 'Queue' -->
<!-- CA1716: Rename virtual/interface member Set so that it no longer conflicts with the reserved language keyword 'Set' -->
<!-- CA1849: 'CancellationTokenSource.Cancel()' synchronously blocks. -->
<!-- CA2012: ValueTask instances returned from method calls should always be used -->
<!-- CA2207: Initialize all static fields in ... -->
<!-- CA2227: Change P to be read-only by removing the property setter -->
<NoWarn>$(NoWarn);CA1000;CA1512;CA1513;CA1710;CA1716;CA1849;CA2012;CA2207;CA2227</NoWarn>
</PropertyGroup>
<PropertyGroup Condition="$(IsServerSideProject)">
<!-- IL2026: Members attributed with RequiresUnreferencedCode may break when trimming -->
<!-- IL2046: All interface implementations and method overrides must have annotations matching the interface or overridden virtual method 'RequiresUnreferencedCodeAttribute' annotations -->
<!-- IL2055: IL2055: Call to 'System.Type.MakeGenericType' cannot be statically analyzed by the trimmer -->
<!-- IL2067, IL2070, IL2072, IL2075, IL2087: 'type' argument does not satisfy 'DynamicallyAccessedMemberTypes.*' -->
<!-- IL2091: 'target generic parameter' generic argument does not satisfy 'DynamicallyAccessedMembersAttribute' ... -->
<NoWarn>$(NoWarn);IL2026;IL2046;IL2055;IL2067;IL2070;IL2072;IL2075;IL2087;IL2091</NoWarn>
</PropertyGroup>
<PropertyGroup>
<PrereleaseBuild>false</PrereleaseBuild>
<LegacyBuild>false</LegacyBuild>
</PropertyGroup>
<PropertyGroup Condition="$(TargetFramework.StartsWith('net6'))">
<PrereleaseBuild>false</PrereleaseBuild>
</PropertyGroup>
<PropertyGroup Condition="$(TargetFramework.StartsWith('net4')) or $(TargetFramework.StartsWith('netstandard'))">
<LegacyBuild>true</LegacyBuild>
</PropertyGroup>
<Target Name="LogCommonProperties" AfterTargets="Build" >
<Message Text="$(MSBuildProjectName) $(TargetFramework): $(ProjectKind), is server side: $(IsServerSideProject)" Importance="low"/>
</Target>
</Project>