Skip to content

Commit eeda38d

Browse files
committed
add README.md to nupkg with the list of symbols defined by the package as a content of it
1 parent efdd470 commit eeda38d

File tree

1 file changed

+109
-0
lines changed

1 file changed

+109
-0
lines changed
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
<!--
2+
SPDX-FileCopyrightText: 2022 smdn <smdn@smdn.jp>
3+
SPDX-License-Identifier: MIT
4+
-->
5+
<Project>
6+
<Import Project="$(MSBuildThisFileDirectory)..\Directory.Build.targets" />
7+
<Import Project="build\$(AssemblyName).targets" />
8+
9+
<PropertyGroup>
10+
<NupkgReadmeFileName>README.md</NupkgReadmeFileName>
11+
<NupkgReadmeFileOutputPath>$(OutputPath)$(NupkgReadmeFileName)</NupkgReadmeFileOutputPath>
12+
</PropertyGroup>
13+
14+
<ItemGroup>
15+
<None Include="$(NupkgReadmeFileOutputPath)" Pack="true" PackagePath="$(NupkgReadmeFileName)" />
16+
</ItemGroup>
17+
18+
<!-- overrides the target GenerateNupkgReadmeFile from Smdn.MSBuild.ProjectAssets.Library -->
19+
<Target
20+
Name="GenerateNupkgReadmeFile"
21+
BeforeTargets="GenerateNuspec"
22+
DependsOnTargets="AddAllCompatibleFrameworkVersionConstants"
23+
>
24+
<CallTarget Targets="ListNETSdkAvailableApiName">
25+
<Output TaskParameter="TargetOutputs" ItemName="_NETSdkAvailableApiSymbol" />
26+
</CallTarget>
27+
28+
<SortNETSdkAvailableApiSymbol Symbols="@(_NETSdkAvailableApiSymbol)">
29+
<Output TaskParameter="SortedSymbols" ItemName="_SortedNETSdkAvailableApiSymbol" />
30+
</SortNETSdkAvailableApiSymbol>
31+
32+
<ItemGroup>
33+
<_NupkgReadmeLines Include="# $(AssemblyName)" />
34+
<_NupkgReadmeLines Include="$(Description)" />
35+
<_NupkgReadmeLines Include="## List of symbols to be defined by this package" />
36+
<_NupkgReadmeLines Include="- `%(_SortedNETSdkAvailableApiSymbol.Identity)`" />
37+
</ItemGroup>
38+
39+
<WriteLinesToFile
40+
File="$(NupkgReadmeFileOutputPath)"
41+
Lines="@(_NupkgReadmeLines)"
42+
Overwrite="true"
43+
/>
44+
</Target>
45+
46+
<UsingTask
47+
TaskName="SortNETSdkAvailableApiSymbol"
48+
TaskFactory="RoslynCodeTaskFactory"
49+
AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll"
50+
>
51+
<ParameterGroup>
52+
<Symbols ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="true" />
53+
<SortedSymbols ParameterType="Microsoft.Build.Framework.ITaskItem[]" Output="true" />
54+
</ParameterGroup>
55+
<Task>
56+
<Using Namespace="System" />
57+
<Using Namespace="System.Linq" />
58+
<Code Type="Fragment" Language="cs"><![CDATA[
59+
SortedSymbols = Symbols.OrderBy(static item => item.ItemSpec).ToArray();
60+
]]></Code>
61+
</Task>
62+
</UsingTask>
63+
64+
<Target Name="AddAllCompatibleFrameworkVersionConstants">
65+
<!-- ref: list of preprocessor symbols for .NET target frameworks: https://docs.microsoft.com/ja-jp/dotnet/standard/frameworks -->
66+
<ItemGroup>
67+
<_CompatibleFrameworkVersionConstant Include="NET" />
68+
<_CompatibleFrameworkVersionConstant Include="NET6_0_OR_GREATER" />
69+
<_CompatibleFrameworkVersionConstant Include="NET5_0_OR_GREATER" />
70+
<_CompatibleFrameworkVersionConstant Include="NETCOREAPP3_1_OR_GREATER" />
71+
<_CompatibleFrameworkVersionConstant Include="NETCOREAPP3_0_OR_GREATER" />
72+
<_CompatibleFrameworkVersionConstant Include="NETCOREAPP2_2_OR_GREATER" />
73+
<_CompatibleFrameworkVersionConstant Include="NETCOREAPP2_1_OR_GREATER" />
74+
<_CompatibleFrameworkVersionConstant Include="NETCOREAPP2_0_OR_GREATER" />
75+
<_CompatibleFrameworkVersionConstant Include="NETCOREAPP1_1_OR_GREATER" />
76+
<_CompatibleFrameworkVersionConstant Include="NETCOREAPP1_0_OR_GREATER" />
77+
78+
<_CompatibleFrameworkVersionConstant Include="NETSTANDARD" />
79+
<_CompatibleFrameworkVersionConstant Include="NETSTANDARD2_1_OR_GREATER" />
80+
<_CompatibleFrameworkVersionConstant Include="NETSTANDARD2_0_OR_GREATER" />
81+
<_CompatibleFrameworkVersionConstant Include="NETSTANDARD1_6_OR_GREATER" />
82+
<_CompatibleFrameworkVersionConstant Include="NETSTANDARD1_5_OR_GREATER" />
83+
<_CompatibleFrameworkVersionConstant Include="NETSTANDARD1_4_OR_GREATER" />
84+
<_CompatibleFrameworkVersionConstant Include="NETSTANDARD1_3_OR_GREATER" />
85+
<_CompatibleFrameworkVersionConstant Include="NETSTANDARD1_2_OR_GREATER" />
86+
<_CompatibleFrameworkVersionConstant Include="NETSTANDARD1_1_OR_GREATER" />
87+
<_CompatibleFrameworkVersionConstant Include="NETSTANDARD1_0_OR_GREATER" />
88+
89+
<_CompatibleFrameworkVersionConstant Include="NETFRAMEWORK" />
90+
<_CompatibleFrameworkVersionConstant Include="NET48_OR_GREATER" />
91+
<_CompatibleFrameworkVersionConstant Include="NET472_OR_GREATER" />
92+
<_CompatibleFrameworkVersionConstant Include="NET471_OR_GREATER" />
93+
<_CompatibleFrameworkVersionConstant Include="NET47_OR_GREATER" />
94+
<_CompatibleFrameworkVersionConstant Include="NET462_OR_GREATER" />
95+
<_CompatibleFrameworkVersionConstant Include="NET461_OR_GREATER" />
96+
<_CompatibleFrameworkVersionConstant Include="NET46_OR_GREATER" />
97+
<_CompatibleFrameworkVersionConstant Include="NET452_OR_GREATER" />
98+
<_CompatibleFrameworkVersionConstant Include="NET451_OR_GREATER" />
99+
<_CompatibleFrameworkVersionConstant Include="NET45_OR_GREATER" />
100+
<_CompatibleFrameworkVersionConstant Include="NET40_OR_GREATER" />
101+
<_CompatibleFrameworkVersionConstant Include="NET35_OR_GREATER" />
102+
<_CompatibleFrameworkVersionConstant Include="NET20_OR_GREATER" />
103+
</ItemGroup>
104+
105+
<PropertyGroup>
106+
<DefineConstants>$(DefineConstants);@(_CompatibleFrameworkVersionConstant, ';')</DefineConstants>
107+
</PropertyGroup>
108+
</Target>
109+
</Project>

0 commit comments

Comments
 (0)