-
Notifications
You must be signed in to change notification settings - Fork 9
/
ToolkitComponent.SourceProject.props
128 lines (115 loc) · 6.4 KB
/
ToolkitComponent.SourceProject.props
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
<Project InitialProjects="CheckComponentName">
<Target Name="CheckComponentName">
<Error Condition="$(ToolkitComponentName) == ''" Message="ToolkitComponentName is not defined. Please check your csproj." />
</Target>
<!-- Set up the MultiTarget system -->
<Import Project="$(ToolingDirectory)\MultiTarget\Library.props" />
<PropertyGroup>
<DateForVersion Condition="'$(DateForVersion)' == ''">$([System.DateTime]::UtcNow.ToString(yyMMdd))</DateForVersion>
<Version Condition="'$(Version)' == ''">$(MajorVersion).$(MinorVersion).$(DateForVersion)</Version>
<Version Condition="'$(PreviewVersion)' != ''">$(Version)-$(PreviewVersion)</Version>
<PackageId Condition="'$(PackageId)' == ''">$(PackageIdPrefix).$(PackageIdVariant).$(ToolkitComponentName)</PackageId>
</PropertyGroup>
<Sdk Condition="'$(IsUwp)' == 'true'" Name="MSBuild.Sdk.Extras" Version="3.0.23" />
<PropertyGroup>
<IsAotCompatible Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net8.0'))">true</IsAotCompatible>
<CsWinRTAotWarningLevel Condition="'$(IsAotCompatible)' == 'true'">2</CsWinRTAotWarningLevel>
</PropertyGroup>
<!-- Auto Generate our own Assembly Info -->
<PropertyGroup>
<!-- Turn-off .NET based AssemblyInfo.cs generator, see below -->
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup>
<!-- https://stackoverflow.com/questions/10980249/msbuild-task-for-setting-custom-attribute-in-assemblyinfo-cs -->
<!-- https://gist.github.com/KirillOsenkov/f20cb84d37a89b01db63f8aafe03f19b -->
<Target Name="AddAssemblyAttributes" BeforeTargets="BeforeCompile">
<PropertyGroup>
<GeneratedAssemblyInfoPath>$(IntermediateOutputPath)AssemblyInfo.g.cs</GeneratedAssemblyInfoPath>
</PropertyGroup>
<ItemGroup>
<!-- Add our own AssemblyInfo.cs standard attributes -->
<AssemblyAttributes Include="AssemblyTitle">
<_Parameter1>$(PackageId)</_Parameter1>
</AssemblyAttributes>
<AssemblyAttributes Include="AssemblyDescription">
<_Parameter1>$(Description)</_Parameter1>
</AssemblyAttributes>
<AssemblyAttributes Include="AssemblyCompany">
<_Parameter1>$(Company)</_Parameter1>
</AssemblyAttributes>
<AssemblyAttributes Include="AssemblyProduct">
<_Parameter1>$(Product)</_Parameter1>
</AssemblyAttributes>
<AssemblyAttributes Include="AssemblyCopyright">
<_Parameter1>$(Copyright)</_Parameter1>
</AssemblyAttributes>
<AssemblyAttributes Include="AssemblyTrademark">
<_Parameter1></_Parameter1>
</AssemblyAttributes>
<AssemblyAttributes Include="AssemblyCulture">
<_Parameter1></_Parameter1>
</AssemblyAttributes>
<AssemblyAttributes Include="AssemblyConfiguration">
<_Parameter1>$(Configuration)</_Parameter1>
</AssemblyAttributes>
<AssemblyAttributes Include="AssemblyVersion">
<!-- This should remain as Major.Minor as Assembly Version shouldn't change across small revisions -->
<_Parameter1>$(MajorVersion).$(MinorVersion).0.0</_Parameter1>
</AssemblyAttributes>
<AssemblyAttributes Include="AssemblyFileVersion">
<!-- TODO: We should include some build number in here to make it more unique, can't use same date as too large -->
<_Parameter1>$(MajorVersion).$(MinorVersion).0.0</_Parameter1>
</AssemblyAttributes>
<AssemblyAttributes Include="AssemblyInformationalVersion">
<_Parameter1>$(Version)</_Parameter1>
</AssemblyAttributes>
<AssemblyAttributes Include="System.Runtime.InteropServices.ComVisible">
<_Parameter1>false</_Parameter1>
<_Parameter1_TypeName>System.Boolean</_Parameter1_TypeName>
</AssemblyAttributes>
<!-- Add custom attributes, also see https://stackoverflow.com/questions/56835671/how-to-read-a-msbuild-property-in-a-given-project-in-runtime -->
<AssemblyAttributes Include="System.Reflection.AssemblyMetadataAttribute" Condition="'$(SourceRevisionId)' != ''">
<_Parameter1>CommitHash</_Parameter1>
<_Parameter2>$(SourceRevisionId)</_Parameter2>
</AssemblyAttributes>
<AssemblyAttributes Include="System.Reflection.AssemblyMetadataAttribute" Condition="'$(PackageProjectUrl)' != ''">
<_Parameter1>RepositoryUrl</_Parameter1>
<_Parameter2>$(PackageProjectUrl)</_Parameter2>
</AssemblyAttributes>
<Warning Text="The PackageProjectUrl property was not set." Condition="'$(PackageProjectUrl)' == ''" />
<!-- Add InternalsVisibleTo for tests -->
<AssemblyAttributes Include="System.Runtime.CompilerServices.InternalsVisibleTo">
<_Parameter1>$(ToolkitComponentName).Tests.Uwp</_Parameter1>
</AssemblyAttributes>
<AssemblyAttributes Include="System.Runtime.CompilerServices.InternalsVisibleTo">
<_Parameter1>$(ToolkitComponentName).Tests.WinAppSdk</_Parameter1>
</AssemblyAttributes>
<AssemblyAttributes Include="System.Runtime.CompilerServices.InternalsVisibleTo">
<_Parameter1>CommunityToolkit.Tests.Uwp</_Parameter1>
</AssemblyAttributes>
<AssemblyAttributes Include="System.Runtime.CompilerServices.InternalsVisibleTo">
<_Parameter1>CommunityToolkit.Tests.WinAppSdk</_Parameter1>
</AssemblyAttributes>
</ItemGroup>
<ItemGroup Condition="'@(InternalsVisibleTo)' != ''">
<!-- Add any declared InternalsVisibleTo in source project, if any-->
<AssemblyAttributes Include="System.Runtime.CompilerServices.InternalsVisibleTo">
<_Parameter1>%(InternalsVisibleTo.Identity)</_Parameter1>
</AssemblyAttributes>
</ItemGroup>
<!-- Extra attributes specific to platforms -->
<ItemGroup Condition="'$(IsWinAppSdk)' == 'true'">
<AssemblyAttributes Include="System.Runtime.Versioning.TargetPlatformAttribute">
<_Parameter1>Windows10.0.19041.0</_Parameter1> <!-- TODO: Grab from variable -->
</AssemblyAttributes>
<AssemblyAttributes Include="System.Runtime.Versioning.SupportedOSPlatformAttribute">
<_Parameter1>Windows10.0.17763.0</_Parameter1> <!-- TODO: Grab from variable -->
</AssemblyAttributes>
</ItemGroup>
<ItemGroup>
<Compile Include="$(GeneratedAssemblyInfoPath)" />
</ItemGroup>
<!-- Write out new auto-generated AssemblyInfo.g.cs file -->
<WriteCodeFragment Language="C#" OutputFile="$(GeneratedAssemblyInfoPath)" AssemblyAttributes="@(AssemblyAttributes)" />
</Target>
</Project>