Skip to content

Commit 63ec637

Browse files
authored
Merge pull request #853 from polyadic/unify-public-api-analyzers
2 parents 6f17806 + 7635ee3 commit 63ec637

File tree

6 files changed

+37
-14
lines changed

6 files changed

+37
-14
lines changed

Funcky.Async/Funcky.Async.csproj

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
3-
<TargetFrameworks>net9.0;net8.0;net5.0;netstandard2.1;netstandard2.0</TargetFrameworks>
3+
<FunckyNewestTargetFramework>net9.0</FunckyNewestTargetFramework>
4+
<TargetFrameworks>$(FunckyNewestTargetFramework);net8.0;net5.0;netstandard2.1;netstandard2.0</TargetFrameworks>
45
<LangVersion>preview</LangVersion>
56
<Nullable>enable</Nullable>
67
<Description>Extends Funcky with support for IAsyncEnumerable and Tasks.</Description>
@@ -43,7 +44,6 @@
4344
<Compile Include="..\Funcky\Internal\PartitionBuilder.cs" Link="Internal\PartitionBuilder.cs" />
4445
</ItemGroup>
4546
<ItemGroup>
46-
<PackageReference Include="Microsoft.CodeAnalysis.PublicApiAnalyzers" PrivateAssets="all" Condition="'$(TargetFramework)' == 'net5.0'" />
4747
<PackageReference Include="PolySharp" PrivateAssets="all" />
4848
<PackageReference Include="Polyadic.Build.SemanticVersioning" PrivateAssets="all" />
4949
<PackageReference Include="System.Linq.Async" />
@@ -58,4 +58,5 @@
5858
<Import Project="..\Analyzers.props" />
5959
<Import Project="..\GlobalUsings.props" />
6060
<Import Project="..\FrameworkFeatureConstants.props" />
61+
<Import Project="..\PublicApiAnalyzers.targets" />
6162
</Project>

Funcky.Xunit.v3/Funcky.Xunit.v3.csproj

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
3-
<TargetFrameworks>netstandard2.0;net6.0</TargetFrameworks>
3+
<FunckyNewestTargetFramework>net6.0</FunckyNewestTargetFramework>
4+
<TargetFrameworks>$(FunckyNewestTargetFramework);netstandard2.0</TargetFrameworks>
45
<LangVersion>preview</LangVersion>
56
<Nullable>enable</Nullable>
67
<Description>Package to use Funcky with xUnit v3</Description>
@@ -36,7 +37,6 @@
3637
<PackageReference Include="Polyadic.Build.SemanticVersioning" PrivateAssets="all" />
3738
<PackageReference Include="xunit.v3.assert" />
3839
<PackageReference Include="xunit.v3.extensibility.core" />
39-
<PackageReference Include="Microsoft.CodeAnalysis.PublicApiAnalyzers" PrivateAssets="all" Condition="'$(TargetFramework)' == 'net6.0'" />
4040
</ItemGroup>
4141
<ItemGroup>
4242
<ProjectReference Include="../Funcky/Funcky.csproj" />
@@ -46,4 +46,5 @@
4646
</ItemGroup>
4747
<Import Project="..\Analyzers.props" />
4848
<Import Project="..\GlobalUsings.props" />
49+
<Import Project="..\PublicApiAnalyzers.targets" />
4950
</Project>

Funcky.Xunit/Funcky.Xunit.csproj

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
3-
<TargetFrameworks>netstandard2.0;net6.0</TargetFrameworks>
3+
<FunckyNewestTargetFramework>net6.0</FunckyNewestTargetFramework>
4+
<TargetFrameworks>$(FunckyNewestTargetFramework);netstandard2.0</TargetFrameworks>
45
<LangVersion>preview</LangVersion>
56
<Nullable>enable</Nullable>
67
<Description>Package to use Funcky with xUnit</Description>
@@ -24,7 +25,6 @@
2425
<PackageReference Include="Polyadic.Build.SemanticVersioning" PrivateAssets="all" />
2526
<PackageReference Include="xunit.assert" />
2627
<PackageReference Include="xunit.extensibility.core" />
27-
<PackageReference Include="Microsoft.CodeAnalysis.PublicApiAnalyzers" PrivateAssets="all" Condition="'$(TargetFramework)' == 'net6.0'" />
2828
</ItemGroup>
2929
<ItemGroup>
3030
<ProjectReference Include="../Funcky/Funcky.csproj" />
@@ -35,4 +35,5 @@
3535
</ItemGroup>
3636
<Import Project="..\Analyzers.props" />
3737
<Import Project="..\GlobalUsings.props" />
38+
<Import Project="..\PublicApiAnalyzers.targets" />
3839
</Project>

Funcky.sln

+1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build Config", "Build Confi
2727
GlobalUsings.Test.props = GlobalUsings.Test.props
2828
NuGet.config = NuGet.config
2929
typos.toml = typos.toml
30+
PublicApiAnalyzers.targets = PublicApiAnalyzers.targets
3031
EndProjectSection
3132
EndProject
3233
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Funcky.Xunit", "Funcky.Xunit\Funcky.Xunit.csproj", "{F2E98B0D-CC17-4576-89DE-065FF475BE6E}"

Funcky/Funcky.csproj

+3-8
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
3-
<TargetFrameworks>net9.0;net8.0;net7.0;net6.0;net5.0;netcoreapp3.1;netstandard2.0;netstandard2.1</TargetFrameworks>
3+
<FunckyNewestTargetFramework>net9.0</FunckyNewestTargetFramework>
4+
<TargetFrameworks>$(FunckyNewestTargetFramework);net8.0;net7.0;net6.0;net5.0;netcoreapp3.1;netstandard2.0;netstandard2.1</TargetFrameworks>
45
<LangVersion>preview</LangVersion>
56
<Nullable>enable</Nullable>
67
<Product>Funcky</Product>
@@ -20,10 +21,8 @@
2021
</PropertyGroup>
2122
<PropertyGroup>
2223
<DefineConstants>$(DefineConstants);CONTRACTS_FULL</DefineConstants>
23-
<TargetFrameworkForPublicApiAnalyzers>net9.0</TargetFrameworkForPublicApiAnalyzers>
2424
</PropertyGroup>
2525
<ItemGroup>
26-
<PackageReference Include="Microsoft.CodeAnalysis.PublicApiAnalyzers" PrivateAssets="all" Condition="'$(TargetFramework)' == '$(TargetFrameworkForPublicApiAnalyzers)'" />
2726
<PackageReference Include="Microsoft.Bcl.HashCode" Condition="'$(TargetFramework)' == 'netstandard2.0'" />
2827
<PackageReference Include="PolySharp" PrivateAssets="all" />
2928
<PackageReference Include="System.Collections.Immutable" Condition="'$(TargetFramework)' == 'netstandard2.0' Or '$(TargetFramework)' == 'netstandard2.1'" />
@@ -34,11 +33,6 @@
3433
<ItemGroup>
3534
<ProjectReference Include="..\Funcky.SourceGenerator\Funcky.SourceGenerator.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" PrivateAssets="all" />
3635
</ItemGroup>
37-
<!-- These files are included by Microsoft.CodeAnalysis.PublicApiAnalyzers is included. -->
38-
<ItemGroup Condition="'$(TargetFramework)' != '$(TargetFrameworkForPublicApiAnalyzers)'">
39-
<AdditionalFiles Include="PublicAPI.Shipped.txt" />
40-
<AdditionalFiles Include="PublicAPI.Unshipped.txt" />
41-
</ItemGroup>
4236
<PropertyGroup Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net6.0'))">
4337
<IsTrimmable>true</IsTrimmable>
4438
<EnableTrimAnalyzer>true</EnableTrimAnalyzer>
@@ -63,4 +57,5 @@
6357
<Import Project="..\Analyzers.props" />
6458
<Import Project="..\GlobalUsings.props" />
6559
<Import Project="..\FrameworkFeatureConstants.props" />
60+
<Import Project="..\PublicApiAnalyzers.targets" />
6661
</Project>

PublicApiAnalyzers.targets

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<!-- We intentionally only include the public API analyzers for the newest target
4+
framework because we often add APIs in newer target frameworks
5+
that we don't add for older target frameworks. -->
6+
<ItemGroup Condition="'$(TargetFramework)' == '$(FunckyNewestTargetFramework)'">
7+
<PackageReference Include="Microsoft.CodeAnalysis.PublicApiAnalyzers" PrivateAssets="all" />
8+
</ItemGroup>
9+
<!-- These files are included by Microsoft.CodeAnalysis.PublicApiAnalyzers if it is enabled. -->
10+
<ItemGroup Condition="'$(TargetFramework)' != '$(FunckyNewestTargetFramework)'">
11+
<AdditionalFiles Include="PublicAPI.Shipped.txt" />
12+
<AdditionalFiles Include="PublicAPI.Unshipped.txt" />
13+
</ItemGroup>
14+
<PropertyGroup>
15+
<CoreCompileDependsOn>$(CoreCompileDependsOn);_ValidateFunckyNewestTargetFrameworkIsSet</CoreCompileDependsOn>
16+
</PropertyGroup>
17+
<Target Name="_ValidateFunckyNewestTargetFrameworkIsSet" Condition="'$(FunckyNewestTargetFramework)' == ''">
18+
<PropertyGroup>
19+
<_Text>The 'FunckyNewestTargetFramework' property is not set; public API analyzers will not run</_Text>
20+
</PropertyGroup>
21+
<Warning Text="$(_Text)" File="$(MSBuildProjectFullPath)" Condition="'$(TreatWarningsAsErrors)' != 'true'" />
22+
<Error Text="$(_Text)" File="$(MSBuildProjectFullPath)" Condition="'$(TreatWarningsAsErrors)' == 'true'" />
23+
</Target>
24+
</Project>

0 commit comments

Comments
 (0)