Skip to content

Commit

Permalink
Add versioning properties for MacOS app bundles
Browse files Browse the repository at this point in the history
Also expands the build script to support building MacOS bundles.
nikolamilekic committed Mar 11, 2022
1 parent bdc9760 commit e5c65a3
Showing 7 changed files with 221 additions and 84 deletions.
7 changes: 4 additions & 3 deletions .github/workflows/Build.yml
Original file line number Diff line number Diff line change
@@ -6,13 +6,14 @@ on:

jobs:
build:
runs-on: windows-latest

runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Setup .NET
uses: actions/setup-dotnet@v1
- name: Run Fake
run: ./build.cmd -t BuildAction
run: ./build.sh -t BuildAction
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
31 changes: 28 additions & 3 deletions .github/workflows/Release.yml
Original file line number Diff line number Diff line change
@@ -6,19 +6,44 @@ on:

jobs:
build:
runs-on: windows-latest

runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Setup .NET
uses: actions/setup-dotnet@v1
- name: Run Fake
run: ./build.cmd -t ReleaseAction
run: ./build.sh -t ReleaseAction
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
OP_CONNECT_HOST: ${{ secrets.OP_CONNECT_HOST }}
OP_CONNECT_TOKEN: ${{ secrets.OP_CONNECT_TOKEN }}
NUGET_KEY: '{{ op://GitHub/Nuget Api/credential }}'
SLEET_CONFIG: '{{ op://GitHub/Sleet Config/Sleet.json }}'
#publish-windows:
# needs: build
# runs-on: windows-latest
# steps:
# - uses: actions/checkout@v2
# with:
# fetch-depth: 0
# - name: Setup .NET
# uses: actions/setup-dotnet@v1
# - name: Run Fake
# run: ./build.cmd -t PublishWindowsAction
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
#publish-macos:
# needs: build
# runs-on: macos-latest
# steps:
# - uses: actions/checkout@v2
# with:
# fetch-depth: 0
# - name: Setup .NET
# uses: actions/setup-dotnet@v1
# - name: Run Fake
# run: ./build.sh -t PublishMacOSAction
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2 changes: 1 addition & 1 deletion GitInfo.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.1
3.2
3 changes: 3 additions & 0 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
## New in 3.2 (Released 2022/03/11)
* Targets expanded to include versioning properties for MacOS app bundles

## New in 3.1 (Released 2022/03/02)
* BaseConverter

217 changes: 159 additions & 58 deletions build.fsx
Original file line number Diff line number Diff line change
@@ -16,7 +16,7 @@ nuget Fake.IO.FileSystem
nuget Fake.IO.Zip
nuget Fake.Tools.Git
nuget Milekic.YoLo prerelease
nuget Milekic.YoLo
nuget Fs1PasswordConnect //"
#load ".fake/build.fsx/intellisense.fsx"

@@ -97,7 +97,6 @@ module Build =
let projectToBuild = !! "*.sln" |> Seq.head

Target.create "Build" <| fun _ -> DotNet.build id projectToBuild

[ "Clean" ] ?=> "Build"

Target.create "Rebuild" ignore
@@ -179,7 +178,7 @@ module Pack =
newBuildProperties @ p.MSBuildParams.Properties }})
projectToPack

[ "Build"; "Test" ] ==> "Pack"
[ "Build" ] ==> "Pack"

Target.create "Repack" ignore
[ "Clean"; "Pack" ] ==> "Repack"
@@ -201,59 +200,56 @@ module Publish =
open FinalVersion

let projectsToPublish = !!"src/*/*.?sproj"
let runtimesToTarget = [ "osx-x64"; "win-x64"; "linux-arm"; "linux-x64" ]

Target.create "Publish" <| fun _ ->
let projectsToPublish = query {
for _project in projectsToPublish do
let _projectContents = File.readAsString _project
let _outputType =
match _projectContents with

type ProjectInfo = {
Path : string
OutputType : string option
ProjectType : string option
TargetFrameworks : string list
BundleMacOSApp : string option
}

let parse project =
let projectContents = File.readAsString project
{
Path = project
OutputType =
match projectContents with
| Regex "<OutputType>(.+)<\/OutputType>" [ outputType ] ->
Some (outputType.ToLower())
| _ -> None
let _projectType =
match _projectContents with
ProjectType =
match projectContents with
| Regex "<Project Sdk=\"(.+)\">" [ projectType ] ->
Some (projectType.ToLower())
| _ -> None
where (
_projectType = Some "microsoft.net.sdk.web" ||
_outputType = Some "exe" ||
_outputType = Some "winexe")

let _runtimesToTarget =
match _projectContents with
| Regex "<RuntimeIdentifier.?>(.+)<\/RuntimeIdentifier" [ runtimes ] ->
runtimes |> String.splitStr ";"
| _ -> runtimesToTarget

for _runtime in _runtimesToTarget do

let _targetFrameworks =
match _projectContents with
TargetFrameworks =
match projectContents with
| Regex "<TargetFramework.?>(.+)<\/TargetFramework" [ frameworks ] ->
frameworks |> String.splitStr ";"
| _ -> List.empty

for framework in _targetFrameworks do

select (_project, framework, _runtime)
| _ -> []
BundleMacOSApp =
match projectContents with
| Regex "<CFBundleName>(.+)<\/CFBundleName>" [ bundleName ] ->
Some bundleName
| _ -> None
}

for project, framework, runtime in projectsToPublish do
let customParameters = "-p:PublishSingleFile=true -p:PublishTrimmed=true"

project
|> DotNet.publish (fun p ->
{ p with
Framework = Some framework
Runtime = Some runtime
Common = { p.Common with CustomParams = Some customParameters } } )

let publish (targetRuntimes : string seq) =
let projectsToPublish =
projectsToPublish
|> Seq.map parse
|> Seq.filter (fun { ProjectType = projectType; OutputType = outputType } ->
projectType = Some "microsoft.net.sdk.web" ||
outputType = Some "exe" ||
outputType = Some "winexe")

for project in projectsToPublish do
for framework in project.TargetFrameworks do
for runtime in targetRuntimes do
let sourceFolder =
seq {
(Path.getDirectory project)
(Path.getDirectory project.Path)
"bin/Release"
framework
runtime
@@ -264,17 +260,41 @@ module Publish =
let targetFolder =
seq {
"publish"
Path.GetFileNameWithoutExtension project
Path.GetFileNameWithoutExtension project.Path
framework
runtime
}
|> Seq.fold (</>) ""

Shell.copyDir targetFolder sourceFolder (fun _ -> true)
match runtime, project.BundleMacOSApp with
| "osx-x64", Some bundle ->
let customParameters = "-t:BundleApp -p:PublishTrimmed=true --self-contained"

project.Path
|> DotNet.publish (fun p ->
{ p with
Framework = Some framework
Runtime = Some runtime
Common = { p.Common with CustomParams = Some customParameters } } )

let sourceFolder = sourceFolder </> bundle + ".app"
let targetFolder = targetFolder </> bundle + ".app"
Shell.copyDir targetFolder sourceFolder (fun _ -> true)
| _ ->
let customParameters = "-p:PublishSingleFile=true -p:PublishTrimmed=true --self-contained"

project.Path
|> DotNet.publish (fun p ->
{ p with
Framework = Some framework
Runtime = Some runtime
Common = { p.Common with CustomParams = Some customParameters } } )

Shell.copyDir targetFolder sourceFolder (fun _ -> true)

let zipFileName =
seq {
Path.GetFileNameWithoutExtension project
Path.GetFileNameWithoutExtension project.Path
finalVersion.Value.NormalizeToShorter()
framework
runtime
@@ -286,7 +306,13 @@ module Publish =
$"publish/{zipFileName}.zip"
!! (targetFolder </> "**")

[ "Clean"; "Build"; "Test" ] ==> "Publish"
Target.create "PublishWindows" <| fun _ -> publish [ "win-x64" ]
Target.create "PublishMacOS" <| fun _ -> publish [ "osx-x64" ]
Target.create "PublishLinux" <| fun _ -> publish [ "linux-arm"; "linux-x64" ]

[ "Clean"; "Test" ] ?=> "PublishWindows"
[ "Clean"; "Test" ] ?=> "PublishMacOS"
[ "Clean"; "Test" ] ?=> "PublishLinux"

module TestSourceLink =
//nuget Fake.IO.FileSystem
@@ -302,7 +328,7 @@ module TestSourceLink =
DotNet.exec id "sourcelink" $"test {p}"
|> fun r -> if not r.OK then failwith $"Source link check for {p} failed.")

[ "Clean"; "Pack" ] ==> "TestSourceLink"
[ "Pack" ] ==> "TestSourceLink"

module BisectHelper =
//nuget Fake.DotNet.Cli
@@ -354,12 +380,12 @@ module UploadArtifactsToGitHub =
let productName = !! "*.sln" |> Seq.head |> Path.GetFileNameWithoutExtension
let gitOwner = "nikolamilekic"

Target.create "UploadArtifactsToGitHub" <| fun _ ->
let finalVersion = finalVersion.Value
Target.create "CreateGitHubRelease" <| fun _ ->
let targetCommit =
if GitHubActions.detect() then GitHubActions.Environment.Sha
else ""
if targetCommit <> "" then
let finalVersion = finalVersion.Value
let token = Environment.environVarOrFail "GITHUB_TOKEN"
GitHub.createClientWithToken token
|> GitHub.createRelease
@@ -368,17 +394,73 @@ module UploadArtifactsToGitHub =
(finalVersion.NormalizeToShorter())
(fun o ->
{ o with
Draft = false
Body = releaseNotes.Value
Prerelease = (finalVersion.PreRelease <> None)
TargetCommitish = targetCommit })
|> Async.Ignore
|> Async.RunSynchronously

[
"Pack"
"PublishWindows"
"PublishMacOS"
"PublishLinux"
"Test"
"TestSourceLink"
] ?=> "CreateGitHubRelease"

Target.create "UploadArtifactsToGitHub" <| fun _ ->
let targetCommit =
if GitHubActions.detect() then GitHubActions.Environment.Sha
else ""
if targetCommit <> "" then
let token = Environment.environVarOrFail "GITHUB_TOKEN"
GitHub.createClientWithToken token
|> fun client -> async {
let! client = client
let rec retry attemptsRemaining : Async<GitHub.Release> = async {
if attemptsRemaining = 0 then
return failwith $"Could not find release for commit {targetCommit}"
else

let! releases =
client.Repository.Release.GetAll(gitOwner, productName)
|> Async.AwaitTask
let releaseMaybe =
releases
|> Seq.tryFind (fun r -> r.TargetCommitish = targetCommit)

match releaseMaybe with
| Some release ->
return {
Client = client
Owner = gitOwner
Release = release
RepoName = productName
}
| None ->
do! Async.Sleep 3000
return! retry (attemptsRemaining - 1)
}
return! retry 5
}
|> GitHub.uploadFiles (
!! "publish/*.nupkg"
++ "publish/*.snupkg"
++ "publish/*.zip")
|> GitHub.publishDraft
|> Async.Ignore
|> Async.RunSynchronously

[ "Pack"; "Publish"; "Test"; "TestSourceLink" ] ==> "UploadArtifactsToGitHub"
[
"Pack"
"PublishWindows"
"PublishMacOS"
"PublishLinux"
"Test"
"TestSourceLink"
"CreateGitHubRelease"
] ?=> "UploadArtifactsToGitHub"

module UploadPackageToNuget =
//nuget Fake.DotNet.Paket
@@ -411,8 +493,13 @@ module UploadPackageToNuget =
WorkingDir = __SOURCE_DIRECTORY__ + "/publish" }
| None -> ()

[ "Pack"; "Test"; "TestSourceLink" ] ==> "UploadPackageToNuget"
[ "UploadArtifactsToGitHub" ] ?=> "UploadPackageToNuget"
[ "Pack" ] ==> "UploadPackageToNuget"

[
"UploadArtifactsToGitHub"
"Test"
"TestSourceLink"
] ?=> "UploadPackageToNuget"

module UploadPackageWithSleet =
//nuget Fake.DotNet.Cli
@@ -447,8 +534,13 @@ module UploadPackageWithSleet =
|> fun r -> if not r.OK then failwith $"Failed to push to Sleet. Errors: {r.Errors}"
| _ -> ()

[ "Pack"; "Test"; "TestSourceLink" ] ==> "UploadPackageWithSleet"
[ "UploadArtifactsToGitHub" ] ?=> "UploadPackageWithSleet"
[ "Pack" ] ==> "UploadPackageWithSleet"

[
"UploadArtifactsToGitHub"
"Test"
"TestSourceLink"
] ?=> "UploadPackageWithSleet"

module Release =
//nuget Fake.Tools.Git
@@ -488,12 +580,21 @@ module GitHubActions =

Target.create "ReleaseAction" ignore
[
"Clean"
"BuildAction"
"Pack"
"PublishLinux"
"CreateGitHubRelease"
"UploadArtifactsToGitHub"
"UploadPackageToNuget"
"UploadPackageWithSleet"
] ==> "ReleaseAction"

Target.create "PublishWindowsAction" ignore
[ "PublishWindows"; "UploadArtifactsToGitHub" ] ==> "PublishWindowsAction"

Target.create "PublishMacOSAction" ignore
[ "PublishMacOS"; "UploadArtifactsToGitHub" ] ==> "PublishMacOSAction"

module Default =
open Fake.Core

37 changes: 19 additions & 18 deletions build.fsx.lock
Original file line number Diff line number Diff line change
@@ -127,26 +127,27 @@ NUGET
FSharp.Core (>= 4.7.2)
System.Reactive (>= 5.0)
FSharp.Core (6.0.3)
FSharp.Data (4.2.7) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0))
FSharp.Data (4.2.8) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0))
FSharp.Core (>= 4.7.2)
FSharpPlus (1.2.2) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0))
FSharp.Core (>= 4.6.2)
Microsoft.Build (17.0)
Microsoft.Build.Framework (>= 17.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0))
Microsoft.Build (17.1)
Microsoft.Build.Framework (>= 17.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0))
Microsoft.NET.StringTools (>= 1.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0))
Microsoft.Win32.Registry (>= 4.3) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0))
System.Collections.Immutable (>= 5.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0))
System.Configuration.ConfigurationManager (>= 4.7) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0))
System.Reflection.Metadata (>= 1.6) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0))
System.Security.Principal.Windows (>= 4.7) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0))
System.Text.Encoding.CodePages (>= 4.0.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0))
System.Text.Json (>= 5.0.2) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0))
System.Threading.Tasks.Dataflow (>= 4.9) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0))
Microsoft.Build.Framework (17.0)
System.Text.Json (>= 6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0))
System.Threading.Tasks.Dataflow (>= 6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0))
Microsoft.Build.Framework (17.1)
Microsoft.Win32.Registry (>= 4.3)
System.Security.Permissions (>= 4.7)
Microsoft.Build.Tasks.Core (17.0)
Microsoft.Build.Framework (>= 17.0)
Microsoft.Build.Utilities.Core (>= 17.0)
Microsoft.Build.Tasks.Core (17.1)
Microsoft.Build.Framework (>= 17.1)
Microsoft.Build.Utilities.Core (>= 17.1)
Microsoft.NET.StringTools (>= 1.0)
Microsoft.Win32.Registry (>= 4.3)
System.CodeDom (>= 4.4)
@@ -156,9 +157,9 @@ NUGET
System.Security.Cryptography.Pkcs (>= 4.7)
System.Security.Cryptography.Xml (>= 4.7)
System.Security.Permissions (>= 4.7)
System.Threading.Tasks.Dataflow (>= 4.9)
Microsoft.Build.Utilities.Core (17.0)
Microsoft.Build.Framework (>= 17.0)
System.Threading.Tasks.Dataflow (>= 6.0)
Microsoft.Build.Utilities.Core (17.1)
Microsoft.Build.Framework (>= 17.1)
Microsoft.NET.StringTools (>= 1.0)
Microsoft.Win32.Registry (>= 4.3)
System.Collections.Immutable (>= 5.0)
@@ -168,14 +169,16 @@ NUGET
Microsoft.NET.StringTools (1.0)
System.Memory (>= 4.5.4)
System.Runtime.CompilerServices.Unsafe (>= 5.0)
Microsoft.NETCore.Platforms (6.0.1) - restriction: || (&& (== net6.0) (< netcoreapp3.1)) (&& (== net6.0) (< netstandard1.2)) (&& (== net6.0) (< netstandard1.3)) (&& (== net6.0) (< netstandard1.5)) (== netstandard2.0)
Microsoft.NETCore.Platforms (6.0.2) - restriction: || (&& (== net6.0) (< netcoreapp3.1)) (&& (== net6.0) (< netstandard1.2)) (&& (== net6.0) (< netstandard1.3)) (&& (== net6.0) (< netstandard1.5)) (== netstandard2.0)
Microsoft.NETCore.Targets (5.0) - restriction: || (&& (== net6.0) (< netcoreapp3.1)) (&& (== net6.0) (< netstandard1.2)) (&& (== net6.0) (< netstandard1.3)) (&& (== net6.0) (< netstandard1.5)) (== netstandard2.0)
Microsoft.Win32.Registry (5.0)
System.Buffers (>= 4.5.1) - restriction: || (&& (== net6.0) (>= monoandroid) (< netstandard1.3)) (&& (== net6.0) (>= monotouch)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (>= xamarinios)) (&& (== net6.0) (>= xamarinmac)) (&& (== net6.0) (>= xamarintvos)) (&& (== net6.0) (>= xamarinwatchos)) (== netstandard2.0)
System.Memory (>= 4.5.4) - restriction: || (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (< netcoreapp2.1)) (&& (== net6.0) (>= uap10.1)) (== netstandard2.0)
System.Security.AccessControl (>= 5.0)
System.Security.Principal.Windows (>= 5.0)
Microsoft.Win32.SystemEvents (6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.1))
Milekic.YoLo (3.1)
FSharp.Core (>= 6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0))
Mono.Posix.NETStandard (1.0)
MSBuild.StructuredLogger (2.1.630)
Microsoft.Build (>= 16.10)
@@ -220,7 +223,7 @@ NUGET
System.Reactive (5.0)
System.Runtime.InteropServices.WindowsRuntime (>= 4.3) - restriction: || (&& (== net6.0) (< netcoreapp3.1)) (== netstandard2.0)
System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (&& (== net6.0) (>= net472)) (&& (== net6.0) (< netcoreapp3.1)) (&& (== net6.0) (>= uap10.1)) (== netstandard2.0)
System.Reflection.Metadata (6.0)
System.Reflection.Metadata (6.0.1)
System.Collections.Immutable (>= 6.0)
System.Resources.Extensions (6.0)
System.Memory (>= 4.5.4) - restriction: || (&& (== net6.0) (>= net461)) (== netstandard2.0)
@@ -261,11 +264,9 @@ NUGET
System.Windows.Extensions (6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.1))
System.Drawing.Common (>= 6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.1))
remote: https://nuget.nikolamilekic.com/index.json
Fs1PasswordConnect (0.2.2)
Fs1PasswordConnect (1.0.0)
Fleece.SystemTextJson (>= 0.9) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0))
FSharp.Core (>= 6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0))
FSharp.Data (>= 4.2.7) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0))
FSharpPlus (>= 1.2.2) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0))
Milekic.YoLo (>= 3.0.0-dev.38) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0))
Milekic.YoLo (3.0.0-dev.42)
FSharp.Core (>= 6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0))
Milekic.YoLo (>= 3.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0))
8 changes: 7 additions & 1 deletion src/Milekic.YoLo/Milekic.YoLo.targets
Original file line number Diff line number Diff line change
@@ -5,8 +5,8 @@
<GitInfoReportImportance>high</GitInfoReportImportance>
<GitIgnoreBranchVersion>True</GitIgnoreBranchVersion>
<GitIgnoreTagVersion>True</GitIgnoreTagVersion>
<PublishRepositoryUrl Condition="'$(RepositoryUrl)' == '' and '$(PackageProjectUrl)' != ''">true</PublishRepositoryUrl>
<RepositoryUrl Condition="'$(RepositoryUrl)' == '' and '$(PackageProjectUrl)' != ''">$(PackageProjectUrl).git</RepositoryUrl>
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<EmbedUntrackedSources>true</EmbedUntrackedSources>
<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
<IsPackable Condition="'$(IsPackable)' == ''">false</IsPackable>
@@ -24,12 +24,18 @@
<InformationalVersion>$(SemanticVersion)+$(GitSha)</InformationalVersion>

<PackageVersion>$(SemanticVersion)</PackageVersion>

<CFBundleVersion Condition="'$(CFBundleName)' != '' AND '$(GitSemVerLabel)' == ''">$(GitSemVerMajor).$(GitSemVerMinor).$(GitSemVerPatch)</CFBundleVersion>
<CFBundleVersion Condition="'$(CFBundleName)' != '' AND '$(GitSemVerLabel)' != ''">$(GitBaseVersionMajor).$(GitBaseVersionMinor).$(GitBaseVersionPatch)</CFBundleVersion>
<CFBundleShortVersionString Condition="'$(CFBundleName)' != ''">$(CFBundleVersion)</CFBundleShortVersionString>
</PropertyGroup>

<ItemGroup>
<AssemblyMetadata Include="ReleaseDate" Value="$(GitCommitDate)" />
</ItemGroup>

<Message Importance="high" Text="Semantic Version: $(SemanticVersion)"/>
<Message Importance="high" Condition="'$(CFBundleName)' != ''" Text="CFBundleVersion: $(CFBundleVersion)"/>
<Message Importance="high" Condition="'$(CFBundleShortVersionString)' != ''" Text="CFBundleShortVersionString: $(CFBundleShortVersionString)"/>
</Target>
</Project>

0 comments on commit e5c65a3

Please sign in to comment.