1 <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 <UsingTask TaskName="GenerateCurrentVersion" AssemblyFile="$(BuildToolsTaskDir)Microsoft.DotNet.Build.Tasks.dll" />
5 <!-- Setup the default file version information -->
7 <MajorVersion Condition="'$(MajorVersion)' == ''">1</MajorVersion>
8 <MinorVersion Condition="'$(MinorVersion)' == ''">0</MinorVersion>
10 <!-- These should be set by importing the targets below but initializing to 0 for consistency -->
11 <BuildNumberMajor Condition="'$(BuildNumberMajor)' == ''">0</BuildNumberMajor>
12 <BuildNumberMinor Condition="'$(BuildNumberMinor)' == ''">0</BuildNumberMinor>
15 <!-- Import a build target that includes the build numbers -->
16 <Import Project="$(BuildNumberTarget)" Condition="Exists('$(BuildNumberTarget)')" />
18 <!-- #################################### -->
19 <!-- Generate Assembly Info -->
20 <!-- #################################### -->
22 <AssemblyVersion Condition="'$(AssemblyVersion)'==''">1.0.0.0</AssemblyVersion>
23 <CLSCompliant Condition="'$(CLSCompliant)'==''">false</CLSCompliant>
24 <AssemblyFileVersion Condition="'$(AssemblyFileVersion)'==''">$(MajorVersion).$(MinorVersion).$(BuildNumberMajor).$(BuildNumberMinor)</AssemblyFileVersion>
27 <Import Project="$(MSBuildThisFileDirectory)versioning.props" Condition="'$(BuildToolsVersioningPropsHasBeenImported)' != 'true'" />
30 <GenerateAssemblyInfo Condition="'$(GenerateAssemblyInfo)'==''">true</GenerateAssemblyInfo>
33 <PropertyGroup Condition="'$(GenerateAssemblyInfo)'=='true'">
34 <AssemblyInfoFile Condition="'$(MSBuildProjectExtension)' == '.csproj'">$(IntermediateOutputPath)_AssemblyInfo.cs</AssemblyInfoFile>
35 <AssemblyInfoFile Condition="'$(MSBuildProjectExtension)' == '.vbproj'">$(IntermediateOutputPath)_AssemblyInfo.vb</AssemblyInfoFile>
36 <AssemblyInfoPartialFile Condition="'$(MSBuildProjectExtension)' == '.csproj'">$(MSBuildThisFileDirectory)AssemblyInfoPartial.cs</AssemblyInfoPartialFile>
37 <AssemblyInfoPartialFile Condition="'$(MSBuildProjectExtension)' == '.vbproj'">$(MSBuildThisFileDirectory)AssemblyInfoPartial.vb</AssemblyInfoPartialFile>
38 <AssemblyInfoPartialFileLink Condition="'$(MSBuildProjectExtension)' == '.csproj'">Properties/_AssemblyInfo.cs</AssemblyInfoPartialFileLink>
39 <AssemblyInfoPartialFileLink Condition="'$(MSBuildProjectExtension)' == '.vbproj'">My Project/_AssemblyInfo.vb</AssemblyInfoPartialFileLink>
40 <CoreCompileDependsOn>$(CoreCompileDependsOn);GenerateAssemblyInfo</CoreCompileDependsOn>
43 <Target Name="DecideIfWeNeedToIncludeDllSafeSearchPathAttribute"
44 Condition="'$(IsDotNetFrameworkProductAssembly)' == 'true' AND '$(IsTestProject)' != 'true'"
45 BeforeTargets="GenerateAssemblyInfo">
47 <!-- We want to apply the IncludeDllSafeSearchPathAttribute on all DotNet assemblies (non test) that have a reference to System.Runtime.InteropServices -->
48 <PropertyGroup Condition="'$(IncludeDllSafeSearchPathAttribute)'==''">
49 <IncludeDllSafeSearchPathAttribute>false</IncludeDllSafeSearchPathAttribute> <!-- We don't need to include it by default. -->
50 <IncludeDllSafeSearchPathAttribute Condition="'%(ProjectReference.Filename)'=='System.Runtime.InteropServices'">true</IncludeDllSafeSearchPathAttribute>
51 <IncludeDllSafeSearchPathAttribute Condition="'%(Reference.Identity)'=='System.Runtime.InteropServices'">true</IncludeDllSafeSearchPathAttribute>
55 <Target Name="GenerateAssemblyInfo"
56 Inputs="$(MSBuildProjectFile)"
57 Outputs="$(AssemblyInfoFile)"
58 Condition="'$(GenerateAssemblyInfo)'=='true'"
59 DependsOnTargets="CreateVersionFileDuringBuild">
61 <Error Condition="!Exists('$(IntermediateOutputPath)')" Text="GenerateAssemblyInfo failed because IntermediateOutputPath isn't set to a valid directory" />
63 <ItemGroup Condition="'$(MSBuildProjectExtension)' == '.csproj'">
64 <AssemblyInfoUsings Include="using System%3B" />
65 <AssemblyInfoUsings Include="using System.Reflection%3B" />
66 <AssemblyInfoLines Include="[assembly:AssemblyTitle("$(AssemblyTitle)")]" />
67 <AssemblyInfoLines Include="[assembly:AssemblyDescription("$(Description)")]" />
68 <AssemblyInfoLines Include="[assembly:AssemblyDefaultAlias("$(AssemblyName)")]" />
69 <AssemblyInfoLines Include="[assembly:AssemblyCompany("$(Company)")]" />
70 <AssemblyInfoLines Include="[assembly:AssemblyProduct("$(Product)")]" />
71 <AssemblyInfoLines Include="[assembly:AssemblyCopyright("$(Copyright)")]" />
72 <AssemblyInfoLines Include="[assembly:AssemblyVersion("$(AssemblyVersion)")]" />
73 <AssemblyInfoLines Include="[assembly:AssemblyFileVersion("$(FileVersion)")]" />
74 <AssemblyInfoLines Include="[assembly:AssemblyInformationalVersion(@"$(InformationalVersion)")]" />
75 <AssemblyInfoLines Condition="'$(CLSCompliant)'=='true'" Include="[assembly:CLSCompliant(true)]" />
76 <AssemblyInfoLines Condition="'$(AssemblyComVisible)'!=''" Include="[assembly:System.Runtime.InteropServices.ComVisible($(AssemblyComVisible))]" />
77 <AssemblyInfoLines Condition="'$(SkipFrameworkAssemblyMetadata)' != 'true'"
78 Include="[assembly:System.Reflection.AssemblyMetadata("%(AssemblyMetadata.Identity)", "%(AssemblyMetadata.Value)")]" />
80 <AssemblyInfoLines Condition="'$(IncludeDllSafeSearchPathAttribute)'=='true'"
81 Include="[assembly: System.Runtime.InteropServices.DefaultDllImportSearchPathsAttribute(System.Runtime.InteropServices.DllImportSearchPath.AssemblyDirectory | System.Runtime.InteropServices.DllImportSearchPath.System32)]" />
84 <ItemGroup Condition="'$(MSBuildProjectExtension)' == '.vbproj'">
85 <AssemblyInfoUsings Include="Imports System" />
86 <AssemblyInfoUsings Include="Imports System.Reflection" />
87 <AssemblyInfoLines Include="<Assembly:AssemblyTitle("$(AssemblyTitle)")>" />
88 <AssemblyInfoLines Include="<Assembly:AssemblyDescription("$(Description)")>" />
89 <AssemblyInfoLines Include="<Assembly:AssemblyDefaultAlias("$(AssemblyName)")>" />
90 <AssemblyInfoLines Include="<Assembly:AssemblyCompany("$(Company)")>" />
91 <AssemblyInfoLines Include="<Assembly:AssemblyProduct("$(Product)k")>" />
92 <AssemblyInfoLines Include="<Assembly:AssemblyCopyright("$(Copyright)")>" />
93 <AssemblyInfoLines Include="<Assembly:AssemblyVersion("$(AssemblyVersion)")>" />
94 <AssemblyInfoLines Include="<Assembly:AssemblyFileVersion("$(FileVersion)")>" />
95 <AssemblyInfoLines Include="<Assembly:AssemblyInformationalVersion("$(InformationalVersion)")>" />
96 <AssemblyInfoLines Condition="'$(CLSCompliant)'=='true'" Include="<Assembly:CLSCompliant(True)>" />
97 <AssemblyInfoLines Condition="'$(AssemblyComVisible)'!=''" Include="<Assembly:System.Runtime.InteropServices.ComVisible($(AssemblyComVisible))>" />
98 <AssemblyInfoLines Condition="'$(SkipFrameworkAssemblyMetadata)' != 'true'"
99 Include="<assembly:System.Reflection.AssemblyMetadata("%(AssemblyMetadata.Identity)", "%(AssemblyMetadata.Value)")>" />
101 <AssemblyInfoLines Condition="'$(IncludeDllSafeSearchPathAttribute)'=='true'"
102 Include="<Assembly:System.Runtime.InteropServices.DefaultDllImportSearchPathsAttribute(System.Runtime.InteropServices.DllImportSearchPath.AssemblyDirectory | System.Runtime.InteropServices.DllImportSearchPath.System32)>" />
105 <ItemGroup Condition="'$(MSBuildProjectExtension)' == '.csproj' And '$(GenerateThisAssemblyClass)' == 'true'">
106 <AssemblyInfoLines Include="internal static class ThisAssembly" />
107 <AssemblyInfoLines Include="{" />
108 <AssemblyInfoLines Include="%20%20%20%20internal const string Title = "$(AssemblyName)"%3B" />
109 <AssemblyInfoLines Include="%20%20%20%20internal const string Copyright = "\u00A9 Microsoft Corporation. All rights reserved."%3B" />
110 <AssemblyInfoLines Include="%20%20%20%20internal const string Version = "$(AssemblyVersion)"%3B" />
111 <AssemblyInfoLines Include="%20%20%20%20internal const string InformationalVersion = "$(AssemblyFileVersion)"%3B" />
112 <AssemblyInfoLines Include="}" />
116 File="$(AssemblyInfoFile)"
117 Lines="@(AssemblyInfoUsings);@(AssemblyInfoLines);@(AssemblyInfoSource)"
121 <Compile Include="$(AssemblyInfoFile)" />
122 <FileWrites Include="$(AssemblyInfoFile)" />
127 <ItemGroup Condition="'$(GenerateAssemblyInfo)'=='true' AND '$(StringResourcesPath)' != '' AND '$(ExcludeAssemblyInfoPartialFile)' != 'true'">
128 <Compile Include="$(AssemblyInfoPartialFile)">
129 <Visible>true</Visible>
130 <Link>$(AssemblyInfoPartialFileLink)</Link>
135 <GenerateNativeVersionInfo Condition="'$(GenerateNativeVersionInfo)'==''">false</GenerateNativeVersionInfo>
138 <PropertyGroup Condition="'$(GenerateNativeVersionInfo)'=='true'">
139 <NativeVersionFileDir>$(BaseIntermediateOutputPath)</NativeVersionFileDir>
140 <NativeVersionHeaderFile>$(NativeVersionFileDir)_version.h</NativeVersionHeaderFile>
141 <GenerateVersionHeader>true</GenerateVersionHeader>
144 <Target Name="GenerateVersionHeader"
145 Inputs="$(MSBuildProjectFile)"
146 Outputs="$(NativeVersionHeaderFile)"
147 DependsOnTargets="CreateVersionFileDuringBuild"
148 Condition="'$(NativeVersionHeaderFile)'!='' and '$(GenerateVersionHeader)'=='true' and !Exists($(NativeVersionHeaderFile))">
151 <!-- Defining versioning variables -->
152 <NativeVersionLines Include="#ifndef VER_COMPANYNAME_STR" />
153 <NativeVersionLines Include="#define VER_COMPANYNAME_STR "Microsoft Corporation"" />
154 <NativeVersionLines Include="#endif" />
155 <NativeVersionLines Include="#ifndef VER_FILEDESCRIPTION_STR" />
156 <NativeVersionLines Include="#define VER_FILEDESCRIPTION_STR "$(AssemblyName)"" />
157 <NativeVersionLines Include="#endif" />
158 <NativeVersionLines Include="#ifndef VER_INTERNALNAME_STR" />
159 <NativeVersionLines Include="#define VER_INTERNALNAME_STR VER_FILEDESCRIPTION_STR" />
160 <NativeVersionLines Include="#endif" />
161 <NativeVersionLines Include="#ifndef VER_ORIGINALFILENAME_STR" />
162 <NativeVersionLines Include="#define VER_ORIGINALFILENAME_STR VER_FILEDESCRIPTION_STR" />
163 <NativeVersionLines Include="#endif" />
164 <NativeVersionLines Include="#ifndef VER_PRODUCTNAME_STR" />
165 <NativeVersionLines Include="#define VER_PRODUCTNAME_STR "Microsoft\xae .NET Framework"" />
166 <NativeVersionLines Include="#endif" />
167 <NativeVersionLines Include="#undef VER_PRODUCTVERSION" />
168 <NativeVersionLines Include="#define VER_PRODUCTVERSION $(MajorVersion),$(MinorVersion),$(BuildNumberMajor),$(BuildNumberMinor)" />
169 <NativeVersionLines Include="#undef VER_PRODUCTVERSION_STR" />
170 <NativeVersionLines Include="#define VER_PRODUCTVERSION_STR "$(MajorVersion).$(MinorVersion).$(BuildNumberMajor).$(BuildNumberMinor)$(BuiltByString)"" />
171 <NativeVersionLines Include="#undef VER_FILEVERSION" />
172 <NativeVersionLines Include="#define VER_FILEVERSION $(MajorVersion),$(MinorVersion),$(BuildNumberMajor),$(BuildNumberMinor)" />
173 <NativeVersionLines Include="#undef VER_FILEVERSION_STR" />
174 <NativeVersionLines Include="#define VER_FILEVERSION_STR "$(MajorVersion).$(MinorVersion).$(BuildNumberMajor).$(BuildNumberMinor)$(BuiltByString)"" />
175 <NativeVersionLines Include="#ifndef VER_LEGALCOPYRIGHT_STR" />
176 <NativeVersionLines Include="#define VER_LEGALCOPYRIGHT_STR "\xa9 Microsoft Corporation. All rights reserved."" />
177 <NativeVersionLines Include="#endif" />
178 <NativeVersionLines Include="#ifndef VER_DEBUG" />
179 <NativeVersionLines Condition="'$(Configuration)'=='Debug'" Include="#define VER_DEBUG VS_FF_DEBUG" />
180 <NativeVersionLines Condition="'$(Configuration)'!='Debug'" Include="#define VER_DEBUG 0" />
181 <NativeVersionLines Include="#endif" />
184 <MakeDir Condition="!Exists('$(NativeVersionFileDir)')" Directories="$(NativeVersionFileDir)" />
187 File="$(NativeVersionHeaderFile)"
188 Lines="@(NativeVersionLines)"
192 <FileWrites Include="$(NativeVersionHeaderFile)" />
196 <PropertyGroup Condition="'$(GenerateVersionSourceFile)'=='true'">
197 <NativeVersionSourceDir>$(BaseIntermediateOutputPath)</NativeVersionSourceDir>
198 <NativeVersionSourceFile>$(NativeVersionSourceDir)version.c</NativeVersionSourceFile>
201 <!-- Non Windows versioning requires to generate a source file and include it on the compilation. -->
202 <Target Name="GenerateVersionSourceFile"
203 Inputs="$(MSBuildProjectFile)"
204 Outputs="$(NativeVersionSourceFile)"
205 DependsOnTargets="CreateVersionFileDuringBuild"
206 Condition="'$(NativeVersionSourceFile)'!='' and '$(GenerateVersionSourceFile)'=='true'">
210 <SourceFileLines Include="static char sccsid%5B%5D %5F%5Fattribute%5F%5F%28%28used%29%29 %3D %22%40%28%23%29Version $(MajorVersion).$(MinorVersion).$(BuildNumberMajor).$(BuildNumberMinor)$(BuiltByString)%22%3B" />
211 <!-- Since this is a source file, compiler will complain if there is no new line at end of file, so adding one bellow. -->
212 <SourceFileLines Include=" " />
215 <MakeDir Condition="!Exists('$(NativeVersionSourceDir)')" Directories="$(NativeVersionSourceDir)" />
218 File="$(NativeVersionSourceFile)"
219 Lines="@(SourceFileLines)"
223 <FileWrites Include="$(NativeVersionSourceFile)" />
228 <GetNuGetPackageVersionsDependsOn>$(GetNuGetPackageVersionsDependsOn);CreateVersionInfoFile</GetNuGetPackageVersionsDependsOn>
232 <SyncInfoDirectory Condition="'$(SyncInfoDirectory)' == ''">$(ObjDir)</SyncInfoDirectory>
233 <SyncInfoFile Condition="'$(SyncInfoFile)' == ''">$(SyncInfoDirectory)version.txt</SyncInfoFile>
236 <Target Name="CreateVersionInfoFile"
237 DependsOnTargets="CreateVersionFileDuringBuild"
238 BeforeTargets="BuildAllProjects"
239 Inputs="$(LatestCommit)"
240 Outputs="$(SyncInfoFile)">
241 <MakeDir Condition="!Exists('$(SyncInfoDirectory)')"
242 Directories="$(SyncInfoDirectory)" />
244 Condition="'$(LatestCommit)' != ''"
245 File="$(SyncInfoFile)"
246 Lines="$(LatestCommit)"
251 Target: CreateOrUpdateCurrentVersionFile
253 Generates the version data and saves it to $(BuildVersionFile) if it hasn't been imported
260 $(AssemblyFileVersion)
262 <Target Name="CreateOrUpdateCurrentVersionFile"
263 BeforeTargets="ResolveProjectReferences"
264 Condition="'$(SkipVersionGeneration)' != 'true' AND '$(VersionPropsImported)' != 'true'">
266 <!-- ############################### -->
267 <Exec Command="git describe --all HEAD 2>&1" StandardOutputImportance="Low" IgnoreExitCode="true" IgnoreStandardErrorWarningFormat="true" ConsoleToMSBuild="true" Condition="'$(RawGitBranchName)' == ''">
268 <Output TaskParameter="ConsoleOutput" PropertyName="RawGitBranchName" />
271 <!-- ############################### -->
272 <PropertyGroup Condition="'$(LatestCommit)' != ''">
273 <LatestCommitExitCode>0</LatestCommitExitCode>
276 <!-- Get the latest commit hash -->
277 <Exec Command="git rev-parse HEAD 2>&1" StandardOutputImportance="Low" IgnoreExitCode="true" IgnoreStandardErrorWarningFormat="true" ConsoleToMSBuild="true" Condition="'$(LatestCommit)' == ''">
278 <Output TaskParameter="ConsoleOutput" PropertyName="LatestCommit" />
279 <Output TaskParameter="ExitCode" PropertyName="LatestCommitExitCode" />
282 <!-- We shouldn't fail the build if we can't retreive the commit hash, so in this case just set it to N/A -->
283 <PropertyGroup Condition="'$(LatestCommitExitCode)'!='0'">
284 <LatestCommit>N/A</LatestCommit>
287 <!-- If things match expected patterns, create $(GitBranchName) from $(RawGitBranchName) -->
288 <Message Text="GIT Branch Name as seen by git describe: '$(RawGitBranchName)'" />
289 <PropertyGroup Condition="$(RawGitBranchName.StartsWith('heads/'))">
290 <GitBranchName>$(RawGitBranchName.SubString(6))</GitBranchName>
292 <PropertyGroup Condition="$(RawGitBranchName.StartsWith('remotes/origin/'))">
293 <GitBranchName>$(RawGitBranchName.SubString(15))</GitBranchName>
295 <Message Text="GIT Branch Name: '$(GitBranchName)'" />
297 <!-- The GitHubOwnerName is the name of the entity that 'owns' a particular github repository (e.g the 'dotnet in https://github/dotnet/coreclr) -->
298 <!-- we assume by default that these build tools are used by the 'dotnet' group. This can be overridden. -->
299 <PropertyGroup Condition="'$(GitHubOwnerName)' == ''">
300 <GitHubOwnerName>dotnet</GitHubOwnerName>
303 <!-- The GitHubRepositoryUrl is formed out of the simple GitHubRepositoryName (e.g. coreclr or corefx) -->
304 <PropertyGroup Condition="'$(GitHubOwnerName)' != '' AND '$(GitHubRepositoryName)' != '' AND '$(GitHubRepositoryUrl)' == ''">
305 <GitHubRepositoryUrl>https://github.com/$(GitHubOwnerName)/$(GitHubRepositoryName)</GitHubRepositoryUrl>
308 <!-- ******* SourceLink Support, activated by setting $(UseSourceLink) ********* -->
310 <!-- Generate the SourceLink file that will be passed to the C# compiler (using ProjectDir and GitHubRepositoryUrl as data) -->
311 <MakeDir Directories="$(BaseIntermediateOutputPath)" />
313 Condition="'$(UseSourceLink)' == 'true' AND '$(GitHubRepositoryUrl)' != '' AND '$(LatestCommit)' != 'N/A' AND !Exists('$(SourceLinkFilePath)')"
314 ContinueOnError="WarnAndContinue"
315 File="$(SourceLinkFilePath)"
317 Lines='{"documents": { "$(ProjectDir.Replace("\", "\\"))*" : "$(GitHubRepositoryUrl.Replace("github.com", "raw.githubusercontent.com"))/$(LatestCommit)/*" }}' />
320 <LatestCommitExitCode/>
323 <!-- ############################### -->
324 <!-- Get the latest commit date -->
326 <VersionTargetsFile Include="$(MSBuildThisFileFullPath)" />
328 <!-- Windows Exec command requires DOS escaping for the percent sign since it secretly runs the process in a shell instead of calling createprocess. -->
330 <LatestDateCommand Condition="'$(RunningOnUnix)'!='true'">git show -s --format=^%25%25cd --date=short HEAD</LatestDateCommand>
331 <LatestDateCommand Condition="'$(RunningOnUnix)'=='true'">git show -s --format=%25cd --date=short HEAD</LatestDateCommand>
334 <PropertyGroup Condition="'$(VersionSeedDate)' != ''">
335 <LatestDateCommandExitCode>0</LatestDateCommandExitCode>
338 <Exec Command="$(LatestDateCommand)" StandardOutputImportance="Low" IgnoreExitCode="true" IgnoreStandardErrorWarningFormat="true" ConsoleToMSBuild="true" Condition="'$(VersionSeedDate)' == ''">
339 <Output TaskParameter="ConsoleOutput" PropertyName="VersionSeedDate" />
340 <Output TaskParameter="ExitCode" PropertyName="LatestDateCommandExitCode" />
342 <PropertyGroup Condition="'$(LatestDateCommandExitCode)'!='0'">
343 <VersionSeedDate>%(VersionTargetsFile.ModifiedTime)</VersionSeedDate>
344 <VersionSeedSourceComment>VersionSeedDate was produced by getting the timestamp of versioning.targets.</VersionSeedSourceComment>
346 <PropertyGroup Condition="'$(LatestDateCommandExitCode)'=='0'">
347 <VersionSeedSourceComment>VersionSeedDate was produced by taking the timestamp of the last git commit.</VersionSeedSourceComment>
350 <VersionTargetsFile Remove="@(VersionTargetsFile)" />
354 <LatestDateCommandExitCode/>
357 <!-- ############################### -->
358 <!-- Get Username -->
360 <VersionUserName Condition="'$(VersionUserName)' == ''">$(USERNAME)</VersionUserName>
363 <Exec Command="whoami" Condition="'$(VersionUserName)' == ''" StandardOutputImportance="Low" IgnoreExitCode="true" IgnoreStandardErrorWarningFormat="true" ConsoleToMSBuild="true">
364 <Output TaskParameter="ConsoleOutput" PropertyName="VersionUserName" />
367 <!-- ############################### -->
368 <!-- Get Hostname -->
370 <VersionHostName Condition="'$(VersionHostName)' == ''">$(COMPUTERNAME)</VersionHostName>
373 <Exec Command="hostname" Condition="'$(RunningOnUnix)'=='true' AND '$(VersionHostName)'==''" StandardOutputImportance="Low" IgnoreExitCode="true" IgnoreStandardErrorWarningFormat="true" ConsoleToMSBuild="true">
374 <Output TaskParameter="ConsoleOutput" PropertyName="VersionHostName" />
377 <!-- Set BuiltByString (which is added to the end of the informational version) -->
378 <!-- This string has additional information as well (like the GIT commit URL) -->
379 <!-- and has the general form @Name1: Value1 @Name2: Value2 ... which makes it easy to parse -->
380 <PropertyGroup Condition="'$(BuiltByString)' == ''">
381 <!-- Set the @BuiltBy key-value pair -->
382 <BuiltByString Condition="'$(VersionUserName)' != '' AND '$(VersionHostName)' != ''">$(BuiltByString) %40BuiltBy: $(VersionUserName)-$(VersionHostName)</BuiltByString>
383 <!-- Set the @Branch key-value pair -->
384 <BuiltByString Condition="'$(GitBranchName)' != ''">$(BuiltByString) %40Branch: $(GitBranchName)</BuiltByString>
385 <!-- Set the @SrcCode key-value pair -->
386 <BuiltByString Condition="'$(GitHubRepositoryUrl)' != '' AND '$(LatestCommit)' != 'N/A'">$(BuiltByString) %40SrcCode: $(GitHubRepositoryUrl)/tree/$(LatestCommit)</BuiltByString>
387 <!-- If that does not work, try setting the @Commit key-value pair -->
388 <BuiltByString Condition="'$(GitHubRepositoryUrl)' == '' AND '$(LatestCommit)' != 'N/A'">$(BuiltByString) %40Commit: $(LatestCommit)</BuiltByString>
393 <!-- Setting default parameters in case that they are not set before. -->
395 <!-- Padding should be equal or greater to 5. Using 5 to align with internal build system. -->
396 <VersionPadding Condition="'$(VersionPadding)'==''">5</VersionPadding>
397 <!-- Using the following default comparison date will produce versions that align with our internal build system. -->
398 <VersionComparisonDate Condition="'$(VersionComparisonDate)'==''">1996-04-01</VersionComparisonDate>
401 <GenerateCurrentVersion SeedDate="$(VersionSeedDate)" OfficialBuildId="$(OfficialBuildId)" ComparisonDate="$(VersionComparisonDate)" Padding="$(VersionPadding)">
402 <Output PropertyName="BuildNumberMajor" TaskParameter="GeneratedVersion" />
403 <Output PropertyName="BuildNumberMinor" TaskParameter="GeneratedRevision" />
404 </GenerateCurrentVersion>
407 <VersionComparisonDate/>
412 <![CDATA[<?xml version="1.0" encoding="utf-8"?>
413 <!-- This is a generated file. $(VersionSourceComment) Seed Date is $(VersionSeedDate). -->
414 <Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
416 <VersionPropsImported>true</VersionPropsImported>
417 <BuildNumberMajor Condition="'%24(BuildNumberMajor)' == ''">$(BuildNumberMajor)</BuildNumberMajor>
418 <BuildNumberMinor Condition="'%24(BuildNumberMinor)' == ''">$(BuildNumberMinor)</BuildNumberMinor>
419 <LatestCommit Condition="'%24(LatestCommit)' == ''">$(LatestCommit)</LatestCommit>
420 <BuiltByString Condition="'%24(BuiltByString)' == ''">$(BuiltByString)</BuiltByString>
424 </VersionFileContent>
427 <!-- Since by default the file will get dropped at the obj dir, make sure that the dir is created already or else WriteLinesToFile will error. -->
428 <MakeDir Directories="$(BuildVersionFilePath)" />
431 ContinueOnError="WarnAndContinue"
432 Condition="!Exists('$(BuildVersionFile)')"
433 File="$(BuildVersionFile)"
434 Lines="$(VersionFileContent)"
437 <!-- Delete old BuildVersion.props files -->
439 <OldBuildVersionFiles Include="$(BuildVersionFilePath)BuildVersions-*.props" Exclude="$(BuildVersionFile)" />
441 <Delete Files="@(OldBuildVersionFiles)" TreatErrorsAsWarnings="true"/>
443 <OldBuildVersionFiles Remove="@(OldBuildVersionFiles)"/>
447 <!-- Redefine AssemblyFileVersion because we just computed it. -->
448 <AssemblyFileVersion>$(MajorVersion).$(MinorVersion).$(BuildNumberMajor).$(BuildNumberMinor)</AssemblyFileVersion>
452 <!-- This target will only be executed if BuildVersion.props doesn't exist yet -->
453 <Target Name="CreateVersionFileDuringBuild" Condition="'$(SkipVersionGeneration)'!='true' AND '$(ShouldCreateVersionFileDuringBuild)'=='true'" DependsOnTargets="CreateOrUpdateCurrentVersionFile">
454 <PropertyGroup Condition="'$(SkipVersionGeneration)'!='true'">
455 <VersionSuffix Condition="'$(PreReleaseLabel)' != ''">-$(PreReleaseLabel)</VersionSuffix>
456 <VersionSuffix Condition="'$(IncludeBuildNumberInPackageVersion)' == 'true'">$(VersionSuffix)-$(BuildNumberMajor)-$(BuildNumberMinor)</VersionSuffix>
460 <Target Name="NativeResourceCompile" DependsOnTargets="$(BeforeResourceCompileTargets)" Inputs="$(MsBuildThisFileDirectory)NativeVersion.rc" Outputs="$(Win32Resource)">
461 <Error Condition="!Exists('$(RCPATH)')" Text="NativeResourceCompile failed because RCPath is set to an non-existing rc.exe path." />
463 <Exec Command='"$(RCPath)" /i $(BaseIntermediateOutputPath) /i $(IntermediateOutputPath) /i $(WindowsSDKPath)\inc /i $(VCSDKPath)\Include /D _UNICODE /D UNICODE /l"0x0409" /r /fo "$(Win32Resource)" "$(MsBuildThisFileDirectory)NativeVersion.rc"' />