Skip to content

Commit 570114c

Browse files
committed
Build cleanup:
- use Directory.Build.props for common config - use Directory.Packages.props for dependencies - add package icon - enable source link, deterministic builds, etc - configure licence, package, etc in package file - add net481 as an explicit TFM (avoids some ns* package-hell scenarios) - use automatic versioning with pinned assembly version - configure build SDK
1 parent c6d7692 commit 570114c

File tree

8 files changed

+177
-96
lines changed

8 files changed

+177
-96
lines changed

Directory.Build.props

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<Project>
2+
<PropertyGroup>
3+
<Copyright>2022- Redis, inc.</Copyright>
4+
<Nullable>enable</Nullable>
5+
<LangVersion>latest</LangVersion>
6+
<ImplicitUsings>enable</ImplicitUsings>
7+
<Authors>Redis Open Source</Authors>
8+
<Owners>Redis OSS</Owners>
9+
<Description>.Net Client for Redis Stack</Description>
10+
<PackageLicenseExpression>MIT</PackageLicenseExpression>
11+
<RepositoryType>git</RepositoryType>
12+
<RepositoryUrl>https://github.com/redis/nRedisStack/</RepositoryUrl>
13+
<PackageReleaseNotes>https://github.com/redis/NRedisStack/releases</PackageReleaseNotes>
14+
<PackageProjectUrl>https://github.com/redis/nRedisStack/</PackageProjectUrl>
15+
<Deterministic>false</Deterministic>
16+
<DebugSymbols>true</DebugSymbols>
17+
<DebugType>embedded</DebugType>
18+
<DefaultLanguage>en-US</DefaultLanguage>
19+
<IncludeSymbols>false</IncludeSymbols>
20+
<PublishRepositoryUrl>true</PublishRepositoryUrl>
21+
<CheckEolTargetFramework>false</CheckEolTargetFramework>
22+
<SuppressNETCoreSdkPreviewMessage>true</SuppressNETCoreSdkPreviewMessage>
23+
<SuppressTfmSupportBuildWarnings>true</SuppressTfmSupportBuildWarnings>
24+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
25+
<NoWarn>$(NoWarn);CS1591</NoWarn>
26+
<Version>1.0.0-beta1</Version>
27+
<ReleaseVersion>1.0.0-beta1</ReleaseVersion>
28+
<PackageVersion>1.0.0-beta1</PackageVersion>
29+
<TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks>
30+
<IsWindows>$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::get_Windows())))</IsWindows>
31+
</PropertyGroup>
32+
33+
<!-- release builds should be deterministic for packaging -->
34+
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
35+
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
36+
<Deterministic>true</Deterministic>
37+
<EmbedUntrackedSources>true</EmbedUntrackedSources>
38+
</PropertyGroup>
39+
<ItemGroup Condition="'$(Configuration)' == 'Release' and '$(SourceRoot)'==''">
40+
<SourceRoot Include="$(MSBuildThisFileDirectory)/"/>
41+
</ItemGroup>
42+
43+
<ItemGroup>
44+
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" PrivateAssets="All" IncludeAssets="runtime; build; native; contentfiles; analyzers"/>
45+
<PackageReference Include="Microsoft.SourceLink.GitHub" PrivateAssets="All"/>
46+
<PackageReference Include="Nerdbank.GitVersioning" PrivateAssets="all"/>
47+
</ItemGroup>
48+
</Project>

Directory.Packages.props

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<Project>
2+
<ItemGroup>
3+
<!-- core build -->
4+
<PackageVersion Include="Microsoft.CSharp" Version="4.7.0"/>
5+
<PackageVersion Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.3"/>
6+
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="8.0.0"/>
7+
<PackageVersion Include="Nerdbank.GitVersioning" Version="3.7.115"/>
8+
9+
<!-- primary library -->
10+
<PackageVersion Include="NetTopologySuite" Version="2.5.0"/>
11+
<PackageVersion Include="System.Text.Json" Version="9.0.2"/>
12+
<PackageVersion Include="StackExchange.Redis" Version="2.8.24"/>
13+
14+
<!-- tests, etc -->
15+
<PackageVersion Include="BouncyCastle.Cryptography" Version="2.5.1"/>
16+
<PackageVersion Include="coverlet.collector" Version="6.0.4"/>
17+
<PackageVersion Include="coverlet.msbuild" Version="6.0.4"/>
18+
<PackageVersion Include="dotenv.net" Version="3.2.1"/>
19+
<PackageVersion Include="GitHubActionsTestLogger" Version="2.4.1"/>
20+
<PackageVersion Include="Microsoft.Azure.StackExchangeRedis" Version="3.1.0"/>
21+
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.12.0"/>
22+
<PackageVersion Include="Validation" Version="2.6.68"/>
23+
<PackageVersion Include="xunit" Version="2.9.3"/>
24+
<PackageVersion Include="xunit.assert" Version="2.9.3"/>
25+
<PackageVersion Include="xunit.runner.visualstudio" Version="3.0.2"/>
26+
<PackageVersion Include="Xunit.SkippableFact" Version="1.5.23"/>
27+
</ItemGroup>
28+
</Project>

NRedisStack.sln

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,14 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRedisStack.Tests", "tests\
99
EndProject
1010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Doc", "tests\Doc\Doc.csproj", "{F14F6342-14A0-4DDD-AB05-C425B1AD8001}"
1111
EndProject
12+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{84D6210F-9A65-427A-965F-57E7B76424AB}"
13+
ProjectSection(SolutionItems) = preProject
14+
Directory.Build.props = Directory.Build.props
15+
Directory.Packages.props = Directory.Packages.props
16+
global.json = global.json
17+
version.json = version.json
18+
EndProjectSection
19+
EndProject
1220
Global
1321
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1422
Debug|Any CPU = Debug|Any CPU

Redis.png

954 Bytes
Loading

src/NRedisStack/NRedisStack.csproj

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,17 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

3-
<PropertyGroup>
4-
<Nullable>enable</Nullable>
5-
<TargetFrameworks>netstandard2.0;net6.0;net7.0;net8.0</TargetFrameworks>
6-
<GenerateDocumentationFile>true</GenerateDocumentationFile>
7-
<LangVersion>latest</LangVersion>
8-
<ImplicitUsings>enable</ImplicitUsings>
9-
<Authors>Redis Open Source</Authors>
10-
<Owners>Redis OSS</Owners>
11-
<Description>.Net Client for Redis Stack</Description>
12-
<PackageReadmeFile>README.md</PackageReadmeFile>
13-
<Version>1.0.0-beta1</Version>
14-
<ReleaseVersion>1.0.0-beta1</ReleaseVersion>
15-
<PackageVersion>1.0.0-beta1</PackageVersion>
16-
</PropertyGroup>
17-
18-
<ItemGroup>
19-
<PackageReference Include="NetTopologySuite" Version="2.5.0" />
20-
<PackageReference Include="System.Text.Json" Version="9.0.2" Condition="'$(TargetFramework)' == 'netstandard2.0'" />
21-
<PackageReference Include="StackExchange.Redis" Version="2.8.24" />
22-
<None Include="..\..\README.md" Pack="true" PackagePath="\" />
23-
</ItemGroup>
3+
<PropertyGroup>
4+
<TargetFrameworks>$(TargetFrameworks);netstandard2.0;net481</TargetFrameworks>
5+
<GenerateDocumentationFile>true</GenerateDocumentationFile>
6+
<PackageReadmeFile>README.md</PackageReadmeFile>
7+
<PackageIcon>Redis.png</PackageIcon>
8+
</PropertyGroup>
249

10+
<ItemGroup>
11+
<PackageReference Include="NetTopologySuite"/>
12+
<PackageReference Include="StackExchange.Redis"/>
13+
<PackageReference Include="System.Text.Json" Condition="'$(TargetFramework)' == 'netstandard2.0' or '$(TargetFramework)' == 'net481'"/>
14+
<None Include="../../Redis.png" Link="Redis.png" Pack="true" PackagePath="/" Visible="false"/>
15+
<None Include="../../README.md" Link="README.md" Pack="true" PackagePath="/" Visible="false"/>
16+
</ItemGroup>
2517
</Project>

tests/Doc/Doc.csproj

Lines changed: 21 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,23 @@
11
<Project Sdk="Microsoft.NET.Sdk">
2-
<PropertyGroup>
3-
<IsWindows>$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::get_Windows())))</IsWindows>
4-
<TargetFrameworks Condition=" '$(IsWindows)' == 'true'">net6.0;net7.0;net8.0;net481</TargetFrameworks>
5-
<TargetFrameworks Condition=" '$(IsWindows)' != 'true'">net6.0;net7.0;net8.0</TargetFrameworks>
6-
<ImplicitUsings>enable</ImplicitUsings>
7-
<Nullable>enable</Nullable>
8-
<LangVersion>latest</LangVersion>
9-
<IsPackable>false</IsPackable>
10-
<!-- <OutputType>Module</OutputType> -->
11-
</PropertyGroup>
12-
<ItemGroup>
13-
<PackageReference Include="GitHubActionsTestLogger" Version="2.4.1">
14-
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
15-
<PrivateAssets>all</PrivateAssets>
16-
</PackageReference>
17-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
18-
<PackageReference Include="xunit" Version="2.9.3" />
19-
<PackageReference Include="xunit.runner.visualstudio" Version="3.0.2">
20-
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
21-
<PrivateAssets>all</PrivateAssets>
22-
</PackageReference>
23-
<PackageReference Include="StackExchange.Redis" Version="2.8.24" />
24-
</ItemGroup>
25-
<ItemGroup>
26-
<ProjectReference Include="..\..\src\NRedisStack\NRedisStack.csproj" />
27-
<ProjectReference Include="..\..\tests\NRedisStack.Tests\NRedisStack.Tests.csproj" />
28-
</ItemGroup>
2+
<PropertyGroup>
3+
<TargetFrameworks Condition=" '$(IsWindows)' == 'true'">$(TargetFrameworks);net481</TargetFrameworks>
4+
<IsPackable>false</IsPackable>
5+
</PropertyGroup>
6+
<ItemGroup>
7+
<PackageReference Include="GitHubActionsTestLogger">
8+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
9+
<PrivateAssets>all</PrivateAssets>
10+
</PackageReference>
11+
<PackageReference Include="Microsoft.NET.Test.Sdk"/>
12+
<PackageReference Include="xunit"/>
13+
<PackageReference Include="xunit.runner.visualstudio">
14+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
15+
<PrivateAssets>all</PrivateAssets>
16+
</PackageReference>
17+
<PackageReference Include="StackExchange.Redis"/>
18+
</ItemGroup>
19+
<ItemGroup>
20+
<ProjectReference Include="..\..\src\NRedisStack\NRedisStack.csproj"/>
21+
<ProjectReference Include="..\..\tests\NRedisStack.Tests\NRedisStack.Tests.csproj"/>
22+
</ItemGroup>
2923
</Project>
Lines changed: 42 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,49 @@
11
<Project Sdk="Microsoft.NET.Sdk">
2-
<PropertyGroup>
3-
<IsWindows>$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::get_Windows())))</IsWindows>
4-
<TargetFrameworks Condition=" '$(IsWindows)' == 'true'">net6.0;net7.0;net8.0;net481</TargetFrameworks>
5-
<TargetFrameworks Condition=" '$(IsWindows)' != 'true'">net6.0;net7.0;net8.0</TargetFrameworks>
6-
<ImplicitUsings>enable</ImplicitUsings>
7-
<Nullable>enable</Nullable>
8-
<LangVersion>latest</LangVersion>
2+
<PropertyGroup>
3+
<TargetFrameworks Condition=" '$(IsWindows)' == 'true'">$(TargetFrameworks);net481</TargetFrameworks>
4+
<IsPackable>false</IsPackable>
5+
</PropertyGroup>
96

10-
<IsPackable>false</IsPackable>
11-
</PropertyGroup>
7+
<ItemGroup>
8+
<PackageReference Include="coverlet.collector">
9+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
10+
<PrivateAssets>all</PrivateAssets>
11+
</PackageReference>
12+
<PackageReference Include="coverlet.msbuild">
13+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
14+
<PrivateAssets>all</PrivateAssets>
15+
</PackageReference>
16+
<PackageReference Include="dotenv.net"/>
17+
<PackageReference Include="Microsoft.NET.Test.Sdk"/>
18+
<PackageReference Include="GitHubActionsTestLogger">
19+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
20+
<PrivateAssets>all</PrivateAssets>
21+
</PackageReference>
22+
<PackageReference Include="NetTopologySuite"/>
23+
<PackageReference Include="Validation"/>
24+
<PackageReference Include="xunit.runner.visualstudio"/>
25+
<PackageReference Include="StackExchange.Redis"/>
26+
<PackageReference Include="xunit"/>
27+
<PackageReference Include="xunit.assert"/>
28+
<PackageReference Include="BouncyCastle.Cryptography"/>
29+
<PackageReference Include="Microsoft.Azure.StackExchangeRedis"/>
30+
<PackageReference Include="Xunit.SkippableFact"/>
31+
</ItemGroup>
1232

13-
<ItemGroup>
14-
<PackageReference Include="coverlet.collector" Version="6.0.4">
15-
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
16-
<PrivateAssets>all</PrivateAssets>
17-
</PackageReference>
18-
<PackageReference Include="coverlet.msbuild" Version="6.0.4">
19-
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
20-
<PrivateAssets>all</PrivateAssets>
21-
</PackageReference>
22-
<PackageReference Include="dotenv.net" Version="3.2.1" />
23-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
24-
<PackageReference Include="GitHubActionsTestLogger" Version="2.4.1">
25-
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
26-
<PrivateAssets>all</PrivateAssets>
27-
</PackageReference>
28-
<PackageReference Include="NetTopologySuite" Version="2.5.0" />
29-
<PackageReference Include="Validation" Version="2.6.68" />
30-
<PackageReference Include="xunit.runner.visualstudio" Version="3.0.2" />
31-
<PackageReference Include="StackExchange.Redis" Version="2.8.24" />
32-
<PackageReference Include="xunit" Version="2.9.3" />
33-
<PackageReference Include="xunit.assert" Version="2.9.3" />
34-
<PackageReference Include="BouncyCastle.Cryptography" Version="2.5.1" />
35-
<PackageReference Include="Microsoft.Azure.StackExchangeRedis" Version="3.1.0" />
36-
<PackageReference Include="Xunit.SkippableFact" Version="1.5.23" />
37-
</ItemGroup>
33+
<ItemGroup>
34+
<ProjectReference Include="..\..\src\NRedisStack\NRedisStack.csproj"/>
35+
</ItemGroup>
3836

39-
<ItemGroup>
40-
<ProjectReference Include="..\..\src\NRedisStack\NRedisStack.csproj" />
41-
</ItemGroup>
37+
<ItemGroup>
38+
<None Update="xunit.runner.json">
39+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
40+
</None>
41+
</ItemGroup>
4242

43-
<ItemGroup>
44-
<None Update="xunit.runner.json">
45-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
46-
</None>
47-
</ItemGroup>
48-
49-
<ItemGroup>
50-
<None Include="..\dockers\endpoints.json">
51-
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
52-
</None>
53-
</ItemGroup>
43+
<ItemGroup>
44+
<None Include="..\dockers\endpoints.json">
45+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
46+
</None>
47+
</ItemGroup>
5448

5549
</Project>

version.json

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"version": "1.0",
3+
"assemblyVersion": "1.0.0.0",
4+
"publicReleaseRefSpec": [
5+
"^refs/heads/main$",
6+
"^refs/tags/v\\d+\\.\\d+"
7+
],
8+
"nugetPackageVersion": {
9+
"semVer": 2
10+
},
11+
"cloudBuild": {
12+
"buildNumber": {
13+
"enabled": true,
14+
"setVersionVariables": true
15+
}
16+
}
17+
}

0 commit comments

Comments
 (0)