[Tizen] Add BuildTools 2.1.0-rc1-02804-05
[platform/upstream/coreclr.git] / Tools / dotnetcli / sdk / 2.1.2 / Sdks / Microsoft.NET.Sdk / build / Microsoft.NET.GenerateAssemblyInfo.targets
1 <!--
2 ***********************************************************************************************
3 Microsoft.NET.GenerateAssemblyInfo.targets
4
5 WARNING:  DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
6           created a backup copy.  Incorrect changes to this file will make it
7           impossible to load or build your projects from the command-line or the IDE.
8
9 Copyright (c) .NET Foundation. All rights reserved. 
10 ***********************************************************************************************
11 -->
12 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13   <!--
14     ============================================================
15                                      GenerateAssemblyInfo
16
17     Generates assembly info source to intermediate directory
18     ============================================================
19     -->
20   <PropertyGroup>
21     <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
22     <GeneratedAssemblyInfoFile Condition="'$(GeneratedAssemblyInfoFile)' ==''">$(IntermediateOutputPath)$(MSBuildProjectName).AssemblyInfo$(DefaultLanguageSourceExtension)</GeneratedAssemblyInfoFile>
23     <GenerateAssemblyInfo Condition="'$(GenerateAssemblyInfo)' == ''">true</GenerateAssemblyInfo>
24   </PropertyGroup>
25
26   <PropertyGroup Condition="'$(GenerateAssemblyInfo)' == 'true'">
27     <GenerateAssemblyCompanyAttribute Condition="'$(GenerateAssemblyCompanyAttribute)' == ''">true</GenerateAssemblyCompanyAttribute>
28     <GenerateAssemblyConfigurationAttribute Condition="'$(GenerateAssemblyConfigurationAttribute)' == ''">true</GenerateAssemblyConfigurationAttribute>
29     <GenerateAssemblyCopyrightAttribute Condition="'$(GenerateAssemblyCopyrightAttribute)' == ''">true</GenerateAssemblyCopyrightAttribute>
30     <GenerateAssemblyDescriptionAttribute Condition="'$(GenerateAssemblyDescriptionAttribute)' == ''">true</GenerateAssemblyDescriptionAttribute>
31     <GenerateAssemblyFileVersionAttribute Condition="'$(GenerateAssemblyFileVersionAttribute)' == ''">true</GenerateAssemblyFileVersionAttribute>
32     <GenerateAssemblyInformationalVersionAttribute Condition="'$(GenerateAssemblyInformationalVersionAttribute)' == ''">true</GenerateAssemblyInformationalVersionAttribute>
33     <GenerateAssemblyProductAttribute Condition="'$(GenerateAssemblyProductAttribute)' == ''">true</GenerateAssemblyProductAttribute>
34     <GenerateAssemblyTitleAttribute Condition="'$(GenerateAssemblyTitleAttribute)' == ''">true</GenerateAssemblyTitleAttribute>
35     <GenerateAssemblyVersionAttribute Condition="'$(GenerateAssemblyVersionAttribute)' == ''">true</GenerateAssemblyVersionAttribute>
36     <GenerateNeutralResourcesLanguageAttribute Condition="'$(GenerateNeutralResourcesLanguageAttribute)' == ''">true</GenerateNeutralResourcesLanguageAttribute>
37   </PropertyGroup>
38
39   <!-- 
40     Note that this must run before every invocation of CoreCompile to ensure that all compiler
41     runs see the generated assembly info. There is at least one scenario involving Xaml 
42     where CoreCompile is invoked without other potential hooks such as Compile or CoreBuild,
43     etc., so we hook directly on to CoreCompile. Furthermore, we  must run *after* 
44     PrepareForBuild to ensure that the intermediate directory has been created.
45    -->
46   <Target Name="GenerateAssemblyInfo"
47           BeforeTargets="CoreCompile"
48           DependsOnTargets="PrepareForBuild;CoreGenerateAssemblyInfo"
49           Condition="'$(GenerateAssemblyInfo)' == 'true'" />
50
51   <Target Name="GetAssemblyAttributes"
52           DependsOnTargets="GetAssemblyVersion">
53     <ItemGroup>
54       <AssemblyAttribute Include="System.Reflection.AssemblyCompanyAttribute" Condition="'$(Company)' != '' and '$(GenerateAssemblyCompanyAttribute)' == 'true'">
55         <_Parameter1>$(Company)</_Parameter1>
56       </AssemblyAttribute>
57       <AssemblyAttribute Include="System.Reflection.AssemblyConfigurationAttribute" Condition="'$(Configuration)' != '' and '$(GenerateAssemblyConfigurationAttribute)' == 'true'">
58         <_Parameter1>$(Configuration)</_Parameter1>
59       </AssemblyAttribute>
60       <AssemblyAttribute Include="System.Reflection.AssemblyCopyrightAttribute" Condition="'$(Copyright)' != '' and '$(GenerateAssemblyCopyrightAttribute)' == 'true'">
61         <_Parameter1>$(Copyright)</_Parameter1>
62       </AssemblyAttribute>
63       <AssemblyAttribute Include="System.Reflection.AssemblyDescriptionAttribute" Condition="'$(Description)' != '' and '$(GenerateAssemblyDescriptionAttribute)' == 'true'">
64         <_Parameter1>$(Description)</_Parameter1>
65       </AssemblyAttribute>
66       <AssemblyAttribute Include="System.Reflection.AssemblyFileVersionAttribute" Condition="'$(FileVersion)' != '' and '$(GenerateAssemblyFileVersionAttribute)' == 'true'">
67         <_Parameter1>$(FileVersion)</_Parameter1>
68       </AssemblyAttribute>
69       <AssemblyAttribute Include="System.Reflection.AssemblyInformationalVersionAttribute" Condition="'$(InformationalVersion)' != '' and '$(GenerateAssemblyInformationalVersionAttribute)' == 'true'">
70         <_Parameter1>$(InformationalVersion)</_Parameter1>
71       </AssemblyAttribute>
72       <AssemblyAttribute Include="System.Reflection.AssemblyProductAttribute" Condition="'$(Product)' != '' and '$(GenerateAssemblyProductAttribute)' == 'true'">
73         <_Parameter1>$(Product)</_Parameter1>
74       </AssemblyAttribute>
75       <AssemblyAttribute Include="System.Reflection.AssemblyTitleAttribute" Condition="'$(AssemblyTitle)' != '' and '$(GenerateAssemblyTitleAttribute)' == 'true'">
76         <_Parameter1>$(AssemblyTitle)</_Parameter1>
77       </AssemblyAttribute>
78       <AssemblyAttribute Include="System.Reflection.AssemblyVersionAttribute" Condition="'$(AssemblyVersion)' != '' and '$(GenerateAssemblyVersionAttribute)' == 'true'">
79         <_Parameter1>$(AssemblyVersion)</_Parameter1>
80       </AssemblyAttribute>
81       <AssemblyAttribute Include="System.Resources.NeutralResourcesLanguageAttribute" Condition="'$(NeutralLanguage)' != '' and '$(GenerateNeutralResourcesLanguageAttribute)' == 'true'">
82         <_Parameter1>$(NeutralLanguage)</_Parameter1>
83       </AssemblyAttribute>
84     </ItemGroup>
85   </Target>
86
87   <!-- 
88     To allow version changes to be respected on incremental builds (e.g. through CLI parameters),
89     create a hash of all assembly attributes so that the cache file will change with the calculated
90     assembly attribute values and msbuild will then execute CoreGenerateAssembly to generate a new file.
91   -->
92   <Target Name="CreateGeneratedAssemblyInfoInputsCacheFile"
93           DependsOnTargets="GetAssemblyAttributes">
94     <PropertyGroup>
95       <GeneratedAssemblyInfoInputsCacheFile>$(IntermediateOutputPath)$(MSBuildProjectName).AssemblyInfoInputs.cache</GeneratedAssemblyInfoInputsCacheFile>
96     </PropertyGroup>
97
98     <Hash ItemsToHash="@(AssemblyAttribute->'%(Identity)%(_Parameter1)')">
99       <Output TaskParameter="HashResult" PropertyName="_AssemblyAttributesHash" />
100     </Hash>
101
102     <WriteLinesToFile Lines="$(_AssemblyAttributesHash)" File="$(GeneratedAssemblyInfoInputsCacheFile)" Overwrite="True" WriteOnlyWhenDifferent="True" />
103     
104     <ItemGroup>
105       <FileWrites Include="$(GeneratedAssemblyInfoInputsCacheFile)" />
106     </ItemGroup>
107   </Target>
108
109   <Target Name="CoreGenerateAssemblyInfo"
110           Condition="'$(Language)'=='VB' or '$(Language)'=='C#'"
111           DependsOnTargets="CreateGeneratedAssemblyInfoInputsCacheFile"
112           Inputs="$(GeneratedAssemblyInfoInputsCacheFile)"
113           Outputs="$(GeneratedAssemblyInfoFile)">
114     <ItemGroup>
115       <!-- Ensure the generated assemblyinfo file is not already part of the Compile sources, as a workaround for https://github.com/dotnet/sdk/issues/114 -->
116       <Compile Remove="$(GeneratedAssemblyInfoFile)" />
117     </ItemGroup>
118
119     <WriteCodeFragment AssemblyAttributes="@(AssemblyAttribute)" Language="$(Language)" OutputFile="$(GeneratedAssemblyInfoFile)">
120       <Output TaskParameter="OutputFile" ItemName="Compile" />
121       <Output TaskParameter="OutputFile" ItemName="FileWrites" />
122     </WriteCodeFragment>
123   </Target>
124
125
126   <!--
127     ==================================================================
128                                             GetAssemblyVersion
129
130     Parses the nuget package version set in $(Version) and returns
131     the implied $(AssemblyVersion) and $(FileVersion).
132
133     e.g.:
134         <Version>1.2.3-beta.4</Version>
135
136     implies:
137         <AssemblyVersion>1.2.3</AssemblyVersion>
138         <FileVersion>1.2.3</FileVersion>
139
140     Note that if $(AssemblyVersion) or $(FileVersion) are are already set, it
141     is considered an override of the default inference from $(Version) and they
142     are left unchanged by this target.
143     ==================================================================
144   -->
145   <Target Name="GetAssemblyVersion">
146     <GetAssemblyVersion Condition="'$(AssemblyVersion)' == ''" NuGetVersion="$(Version)">
147       <Output TaskParameter="AssemblyVersion" PropertyName="AssemblyVersion" />
148     </GetAssemblyVersion>
149     
150     <PropertyGroup>
151       <FileVersion Condition="'$(FileVersion)' == ''">$(AssemblyVersion)</FileVersion>
152       <InformationalVersion Condition="'$(InformationalVersion)' == ''">$(Version)</InformationalVersion>
153     </PropertyGroup>
154   </Target>
155
156 </Project>