forked from dotnet/runtime
-
Notifications
You must be signed in to change notification settings - Fork 0
/
versioning.targets
100 lines (83 loc) · 5.42 KB
/
versioning.targets
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
<Project>
<PropertyGroup>
<GenerateAssemblyInfo Condition="'$(GenerateAssemblyInfo)'==''">true</GenerateAssemblyInfo>
</PropertyGroup>
<PropertyGroup Condition="'$(GenerateAssemblyInfo)'=='true'">
<AssemblyInfoFile Condition="'$(MSBuildProjectExtension)' == '.csproj'">$(IntermediateOutputPath)_AssemblyInfo.cs</AssemblyInfoFile>
<AssemblyInfoFile Condition="'$(MSBuildProjectExtension)' == '.vbproj'">$(IntermediateOutputPath)_AssemblyInfo.vb</AssemblyInfoFile>
</PropertyGroup>
<!-- Assembly metadata indicating that an assembly is a framework (as opposed to user) assembly:
Test projects need to not have this because of the way "IsFrameworkAssembly" APIs work to check this. -->
<ItemGroup Condition="'$(IsTestProject)' != 'true'" >
<AssemblyMetadata Include=".NETFrameworkAssembly">
<Value></Value>
</AssemblyMetadata>
<AssemblyMetadata Include="Serviceable">
<Value>True</Value>
</AssemblyMetadata>
<AssemblyMetadata Include="PreferInbox">
<Value>True</Value>
</AssemblyMetadata>
</ItemGroup>
<Target Name="DecideIfWeNeedToIncludeDllSafeSearchPathAttribute"
Condition="'$(IsDotNetFrameworkProductAssembly)' == 'true' and '$(IsTestProject)' != 'true'">
<!-- We want to apply the IncludeDllSafeSearchPathAttribute on all DotNet assemblies (non test) that have a reference to System.Runtime.InteropServices -->
<PropertyGroup Condition="'$(IncludeDllSafeSearchPathAttribute)'==''">
<IncludeDllSafeSearchPathAttribute>false</IncludeDllSafeSearchPathAttribute> <!-- We don't need to include it by default. -->
<IncludeDllSafeSearchPathAttribute Condition="'%(ProjectReference.Filename)'=='System.Runtime.InteropServices'">true</IncludeDllSafeSearchPathAttribute>
<IncludeDllSafeSearchPathAttribute Condition="'%(Reference.Identity)'=='System.Runtime.InteropServices'">true</IncludeDllSafeSearchPathAttribute>
</PropertyGroup>
</Target>
<PropertyGroup>
<!-- corefx has never generated these attributes so don't let the SDK generate them -->
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateNeutralResourcesLanguageAttribute>false</GenerateNeutralResourcesLanguageAttribute>
<!-- corefx has always added a description set to assembly name so include that here -->
<Description Condition="'$(Description)' == ''">$(AssemblyName)</Description>
<!-- SDK sets product to assembly but we want it to be our product name -->
<Product>Microsoft%AE .NET Core</Product>
<!-- Use the .NET Core product branding version for informational version description -->
<InformationalVersion>$(ProductVersion)</InformationalVersion>
<InformationalVersion Condition="'$(VersionSuffix)' != ''">$(InformationalVersion)-$(VersionSuffix)</InformationalVersion>
</PropertyGroup>
<Target Name="_ComputeBuildToolsAssemblyInfoAttributes"
DependsOnTargets="DecideIfWeNeedToIncludeDllSafeSearchPathAttribute"
BeforeTargets="GetAssemblyAttributes">
<ItemGroup>
<AssemblyAttribute Include="System.Reflection.AssemblyDefaultAliasAttribute">
<_Parameter1>$(AssemblyName)</_Parameter1>
</AssemblyAttribute>
<AssemblyAttribute Include="System.Reflection.AssemblyMetadata"
Condition="'$(SkipFrameworkAssemblyMetadata)' != 'true' and '@(AssemblyMetadata)' != ''">
<_Parameter1>%(AssemblyMetadata.Identity)</_Parameter1>
<_Parameter2>%(AssemblyMetadata.Value)</_Parameter2>
</AssemblyAttribute>
</ItemGroup>
</Target>
<!-- Work around https://github.com/Microsoft/msbuild/issues/3412 by writing the non-string assembly attributes manually -->
<!-- Note: ReferenceAssemblies.targets still uses @(AssemblyInfoLines) as well. So if you remove this, those need to migrate too. -->
<Target Name="_WriteNonStringAssemblyInfoAttributes"
AfterTargets="CoreGenerateAssemblyInfo"
BeforeTargets="BeforeCompile;CoreCompile"
Inputs="$(MSBuildProjectFile)"
Outputs="$(AssemblyInfoFile)">
<ItemGroup Condition="'$(MSBuildProjectExtension)' == '.csproj'">
<AssemblyInfoLines Condition="'$(CLSCompliant)'=='true'" Include="[assembly:System.CLSCompliant(true)]" />
<AssemblyInfoLines Condition="'$(IncludeDllSafeSearchPathAttribute)'=='true'"
Include="[assembly: System.Runtime.InteropServices.DefaultDllImportSearchPathsAttribute(System.Runtime.InteropServices.DllImportSearchPath.AssemblyDirectory | System.Runtime.InteropServices.DllImportSearchPath.System32)]" />
</ItemGroup>
<ItemGroup Condition="'$(MSBuildProjectExtension)' == '.vbproj'">
<AssemblyInfoLines Condition="'$(CLSCompliant)'=='true'" Include="<Assembly:System.CLSCompliant(True)>" />
<AssemblyInfoLines Condition="'$(IncludeDllSafeSearchPathAttribute)'=='true'"
Include="<Assembly:System.Runtime.InteropServices.DefaultDllImportSearchPathsAttribute(System.Runtime.InteropServices.DllImportSearchPath.AssemblyDirectory Or System.Runtime.InteropServices.DllImportSearchPath.System32)>" />
</ItemGroup>
<WriteLinesToFile File="$(AssemblyInfoFile)"
Lines="@(AssemblyInfoLines)"
Condition="'@(AssemblyInfoLines)' != ''"
Overwrite="true" />
<ItemGroup Condition="'@(AssemblyInfoLines)' != ''">
<Compile Include="$(AssemblyInfoFile)" />
<FileWrites Include="$(AssemblyInfoFile)" />
</ItemGroup>
</Target>
</Project>