diff --git a/.vsts-ci.yml b/.vsts-ci.yml
index b908716..d7bcd82 100644
--- a/.vsts-ci.yml
+++ b/.vsts-ci.yml
@@ -14,3 +14,5 @@ jobs:
- template: .vsts-linux-build.yml
parameters:
name: Linux
+
+- template: .vsts-macOS-build.yml
diff --git a/.vsts-iOS-build.yml b/.vsts-iOS-build.yml
new file mode 100644
index 0000000..1965d28
--- /dev/null
+++ b/.vsts-iOS-build.yml
@@ -0,0 +1,91 @@
+parameters:
+ pool: ''
+
+jobs:
+- job: iOS
+ pool: ${{ parameters.pool }}
+
+ steps:
+ - checkout: self
+ clean: true
+
+ - task: UseDotNet@2
+ inputs:
+ packageType: 'runtime'
+ version: '2.2.0'
+
+ - task: nventiveCanaryUpdater@5
+ condition: startsWith(variables['Build.SourceBranch'], 'refs/heads/canaries')
+ inputs:
+ solution: 'XamlControlsGallery.Windows/XamlControlsGallery.sln'
+ usePrivateFeed: false
+ useNuGetOrg: true
+ mergeBranch: true
+ branchToMerge: 'master'
+ nugetUpdaterVersion: '2.0.6'
+ allowDowngrade: true
+ packageAuthor: 'nventive'
+ summaryFile: '$(Build.ArtifactStagingDirectory)/Canary.md'
+ resultFile: '$(Build.ArtifactStagingDirectory)/update_result.json'
+
+ - task: UseGitVersion@5
+ inputs:
+ versionSpec: '5.x'
+ updateAssemblyInfo: false
+ configFilePath: gitversion.yml
+
+ - task: InstallAppleCertificate@2
+ displayName: 'Install an Apple certificate'
+ inputs:
+ certSecureFile: '$(iOSSigning.Certificate)'
+ certPwd: '$(iOSSigning.CertificatePwd)'
+ signingIdentity: '$(iOSSigning.CertificateIdentity)'
+
+ - task: InstallAppleProvisioningProfile@1
+ displayName: 'Install an Apple provisioning profile'
+ inputs:
+ provProfileSecureFile: '$(iOSSigning.ProvisioningProfile)'
+
+ - task: MSBuild@1
+ inputs:
+ solution: build/Build.csproj
+ msbuildLocationMethod: version
+ msbuildVersion: latest
+ msbuildArchitecture: x86
+ msbuildArguments: "/r"
+ clean: false
+ maximumCpuCount: true
+ restoreNugetPackages: false
+ logProjectEvents: false
+ createLogFile: false
+
+ - task: MSBuild@1
+ inputs:
+ solution: '$(build.sourcesdirectory)/XamlControlsGallery.iOS/XamlControlsGallery.iOS.csproj'
+ msbuildLocationMethod: version
+ msbuildVersion: latest
+ msbuildArchitecture: x86
+ msbuildArguments: /r /p:Configuration=Release /p:Platform=iPhone /detailedsummary /m:16 /nr:false "/p:PackageVersion=%GITVERSION_FullSemVer%" "/p:InformationalVersion=%GITVERSION_InformationalVersion%"
+ clean: false
+ maximumCpuCount: true
+ restoreNugetPackages: false
+ logProjectEvents: true
+ createLogFile: true
+
+ - task: CopyFiles@2
+ displayName: 'Publish iOS Binaries'
+ inputs:
+ SourceFolder: $(build.sourcesdirectory)/XamlControlsGallery.iOS/bin/iPhone/Release
+ Contents: '*.ipa'
+ TargetFolder: $(build.artifactstagingdirectory)/XamlUIBasics-iOS
+ CleanTargetFolder: false
+ OverWrite: false
+ flattenFolders: false
+
+ - task: PublishBuildArtifacts@1
+ # https://developercommunity.visualstudio.com/content/problem/284991/public-vsts-previouw-cant-set-build-number-of-pr-b.html
+ condition: eq(variables['System.PullRequest.IsFork'], 'False')
+ inputs:
+ PathtoPublish: $(build.artifactstagingdirectory)
+ ArtifactName: universal-samples-drop
+ ArtifactType: Container
diff --git a/.vsts-linux-build.yml b/.vsts-linux-build.yml
index 14cb385..744b608 100644
--- a/.vsts-linux-build.yml
+++ b/.vsts-linux-build.yml
@@ -3,10 +3,10 @@ parameters:
jobs:
- job: Linux
- container: nv-bionic-wasm
+ container: unoplatform/wasm-build:2.1
pool:
- vmImage: 'ubuntu-18.04'
+ vmImage: 'ubuntu-latest'
strategy:
@@ -20,6 +20,7 @@ jobs:
variables:
NUGET_PACKAGES: $(build.sourcesdirectory)/.nuget
+ DOTNET_ROOT: $(Agent.ToolsDirectory)/dotnet
steps:
- checkout: self
@@ -28,7 +29,7 @@ jobs:
- task: UseDotNet@2
inputs:
packageType: 'runtime'
- version: '2.2.0'
+ version: '2.2.x'
- task: nventiveCanaryUpdater@5
condition: startsWith(variables['Build.SourceBranch'], 'refs/heads/canaries')
@@ -44,16 +45,16 @@ jobs:
summaryFile: '$(Build.ArtifactStagingDirectory)/Canary.md'
resultFile: '$(Build.ArtifactStagingDirectory)/update_result.json'
-
- bash: |
cd ~
git clone https://github.com/emscripten-core/emsdk
cd emsdk
- ./emsdk install sdk-1.39.9
- ./emsdk activate sdk-1.39.9
+ ./emsdk install sdk-1.39.11
+ ./emsdk activate sdk-1.39.11
displayName: 'Setup Emscripten'
+
- bash: |
cd ~/emsdk
wget https://raw.githubusercontent.com/mono/mono/27247739c68faee7b2a63ae805222d4b375d2161/sdks/builds/emscripten-pr-8457.diff
@@ -64,8 +65,14 @@ jobs:
displayName: 'Apply Emscripten Mono patches'
- - task: GitVersion@5
+ - task: UseDotNet@2
inputs:
+ packageType: 'runtime'
+ version: '2.1.x'
+
+ - task: UseGitVersion@5
+ inputs:
+ versionSpec: '5.x'
updateAssemblyInfo: false
- script: |
diff --git a/.vsts-macOS-build.yml b/.vsts-macOS-build.yml
index 0282772..4e9f123 100644
--- a/.vsts-macOS-build.yml
+++ b/.vsts-macOS-build.yml
@@ -1,9 +1,7 @@
-parameters:
- pool: ''
-
jobs:
-- job: macos
- pool: ${{ parameters.pool }}
+- job: macOS
+ pool:
+ vmImage: macOS-10.15
steps:
- checkout: self
@@ -28,54 +26,19 @@ jobs:
summaryFile: '$(Build.ArtifactStagingDirectory)/Canary.md'
resultFile: '$(Build.ArtifactStagingDirectory)/update_result.json'
- - bash: |
- shopt -s nullglob
- function join_by { local IFS="$1"; shift; echo "$*"; }
- lib_path=$(join_by ';' $(Agent.WorkFolder)/_tasks/GitVersion*/4.0.*/lib/linux/x86_64)
- echo LD_LIBRARY_PATH: $lib_path
- echo "##vso[task.setvariable variable=LD_LIBRARY_PATH]$lib_path"
-
- displayName: Update LD_LIBRARY_PATH for GitVersion
-
- - task: GitVersion@5
- # Ignore gitversion for forks, until this is fixed:
- # https://developercommunity.visualstudio.com/content/problem/284991/public-vsts-previouw-cant-set-build-number-of-pr-b.html
- condition: eq(variables['System.PullRequest.IsFork'], 'False')
+ - task: UseGitVersion@5
inputs:
+ versionSpec: '5.x'
updateAssemblyInfo: false
-
- - task: InstallAppleCertificate@2
- displayName: 'Install an Apple certificate'
- inputs:
- certSecureFile: '$(iOSSigning.Certificate)'
- certPwd: '$(iOSSigning.CertificatePwd)'
- signingIdentity: '$(iOSSigning.CertificateIdentity)'
-
- - task: InstallAppleProvisioningProfile@1
- displayName: 'Install an Apple provisioning profile'
- inputs:
- provProfileSecureFile: '$(iOSSigning.ProvisioningProfile)'
+ configFilePath: gitversion.yml
- task: MSBuild@1
inputs:
- solution: build/Build.csproj
+ solution: '$(build.sourcesdirectory)/XamlControlsGallery.macOS/XamlControlsGallery.macOS.csproj'
msbuildLocationMethod: version
msbuildVersion: latest
msbuildArchitecture: x86
- msbuildArguments: "/r"
- clean: false
- maximumCpuCount: true
- restoreNugetPackages: false
- logProjectEvents: false
- createLogFile: false
-
- - task: MSBuild@1
- inputs:
- solution: '$(build.sourcesdirectory)/XamlControlsGallery.iOS/XamlControlsGallery.iOS.csproj'
- msbuildLocationMethod: version
- msbuildVersion: latest
- msbuildArchitecture: x86
- msbuildArguments: /r /p:Configuration=Release /p:Platform=iPhone /detailedsummary /m:16 /nr:false "/p:PackageVersion=%GITVERSION_FullSemVer%" "/p:InformationalVersion=%GITVERSION_InformationalVersion%"
+ msbuildArguments: /r /p:Configuration=Release /detailedsummary # "/p:PackageVersion=%GITVERSION_FullSemVer%" "/p:InformationalVersion=%GITVERSION_InformationalVersion%"
clean: false
maximumCpuCount: true
restoreNugetPackages: false
@@ -83,18 +46,16 @@ jobs:
createLogFile: true
- task: CopyFiles@2
- displayName: 'Publish iOS Binaries'
+ displayName: 'Publish macOS Binaries'
inputs:
- SourceFolder: $(build.sourcesdirectory)/XamlControlsGallery.iOS/bin/iPhone/Release
+ SourceFolder: $(build.sourcesdirectory)/XamlControlsGallery.macOS/bin/Release/XamlControlsGallery.macOS.app
Contents: '*.ipa'
- TargetFolder: $(build.artifactstagingdirectory)/XamlUIBasics-iOS
+ TargetFolder: $(build.artifactstagingdirectory)/XamlUIBasics-macOS
CleanTargetFolder: false
OverWrite: false
flattenFolders: false
- task: PublishBuildArtifacts@1
- # https://developercommunity.visualstudio.com/content/problem/284991/public-vsts-previouw-cant-set-build-number-of-pr-b.html
- condition: eq(variables['System.PullRequest.IsFork'], 'False')
inputs:
PathtoPublish: $(build.artifactstagingdirectory)
ArtifactName: universal-samples-drop
diff --git a/.vsts-prod.yml b/.vsts-prod.yml
index 859f0e8..44a407e 100644
--- a/.vsts-prod.yml
+++ b/.vsts-prod.yml
@@ -1,5 +1,5 @@
jobs:
-- template: .vsts-macOS-build.yml
+- template: .vsts-iOS-build.yml
parameters:
name: macOS
pool:
diff --git a/XamlControlsGallery.Droid/XamlControlsGallery.Droid.csproj b/XamlControlsGallery.Droid/XamlControlsGallery.Droid.csproj
index 1148298..bb00ac1 100644
--- a/XamlControlsGallery.Droid/XamlControlsGallery.Droid.csproj
+++ b/XamlControlsGallery.Droid/XamlControlsGallery.Droid.csproj
@@ -74,10 +74,10 @@
- 2.0.5-gd0f1a63314
+ 2.0.7-g3ba6a30145
-
-
+
+
diff --git a/XamlControlsGallery.Wasm/XamlControlsGallery.Wasm.csproj b/XamlControlsGallery.Wasm/XamlControlsGallery.Wasm.csproj
index 5d13a19..bb54916 100644
--- a/XamlControlsGallery.Wasm/XamlControlsGallery.Wasm.csproj
+++ b/XamlControlsGallery.Wasm/XamlControlsGallery.Wasm.csproj
@@ -48,14 +48,14 @@
-
-
-
+
+
+
-
-
+
+
all
runtime; build; native; contentfiles; analyzers
diff --git a/XamlControlsGallery.Windows/XamlControlsGallery.sln b/XamlControlsGallery.Windows/XamlControlsGallery.sln
index fc974f9..5ebb4d5 100644
--- a/XamlControlsGallery.Windows/XamlControlsGallery.sln
+++ b/XamlControlsGallery.Windows/XamlControlsGallery.sln
@@ -13,10 +13,13 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlControlsGallery.Droid",
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlControlsGallery.iOS", "..\XamlControlsGallery.iOS\XamlControlsGallery.iOS.csproj", "{1B455FB3-FD09-4586-A242-10A4C4CF2C0B}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlControlsGallery.macOS", "..\XamlControlsGallery.macOS\XamlControlsGallery.macOS.csproj", "{313FCF91-A6DB-4585-A23E-49BBEEF4784D}"
+EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
..\XamlControlsGallery.Shared\XamlControlsGallery.Shared.projitems*{1b455fb3-fd09-4586-a242-10a4c4cf2c0b}*SharedItemsImports = 4
..\XamlControlsGallery.Shared\XamlControlsGallery.Shared.projitems*{21a6ddab-f557-4753-8048-4e770b8bd0db}*SharedItemsImports = 13
+ ..\XamlControlsGallery.Shared\XamlControlsGallery.Shared.projitems*{313fcf91-a6db-4585-a23e-49bbeef4784d}*SharedItemsImports = 4
..\XamlControlsGallery.Shared\XamlControlsGallery.Shared.projitems*{3f68773a-31a5-59fe-926c-0569e415c9d9}*SharedItemsImports = 4
..\XamlControlsGallery.Shared\XamlControlsGallery.Shared.projitems*{73f25f1f-59ed-4f92-b199-473b40cf63c7}*SharedItemsImports = 5
..\XamlControlsGallery.Shared\XamlControlsGallery.Shared.projitems*{d70fb368-e8e1-4f11-9292-be8508b08495}*SharedItemsImports = 4
@@ -262,6 +265,44 @@ Global
{1B455FB3-FD09-4586-A242-10A4C4CF2C0B}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
{1B455FB3-FD09-4586-A242-10A4C4CF2C0B}.Release|x64.ActiveCfg = Release|iPhone
{1B455FB3-FD09-4586-A242-10A4C4CF2C0B}.Release|x86.ActiveCfg = Release|iPhone
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.Ad-Hoc|Any CPU.ActiveCfg = Release|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.Ad-Hoc|Any CPU.Build.0 = Release|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.Ad-Hoc|ARM.ActiveCfg = Release|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.Ad-Hoc|ARM.Build.0 = Release|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.Ad-Hoc|iPhone.ActiveCfg = Release|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.Ad-Hoc|iPhone.Build.0 = Release|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.Ad-Hoc|x64.ActiveCfg = Release|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.Ad-Hoc|x64.Build.0 = Release|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.Ad-Hoc|x86.ActiveCfg = Release|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.Ad-Hoc|x86.Build.0 = Release|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.AppStore|Any CPU.ActiveCfg = Release|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.AppStore|Any CPU.Build.0 = Release|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.AppStore|ARM.ActiveCfg = Release|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.AppStore|ARM.Build.0 = Release|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.AppStore|iPhone.ActiveCfg = Release|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.AppStore|iPhone.Build.0 = Release|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.AppStore|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.AppStore|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.AppStore|x64.ActiveCfg = Release|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.AppStore|x64.Build.0 = Release|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.AppStore|x86.ActiveCfg = Release|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.AppStore|x86.Build.0 = Release|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.Debug|ARM.ActiveCfg = Debug|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.Debug|iPhone.ActiveCfg = Debug|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.Debug|x64.ActiveCfg = Debug|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.Debug|x86.ActiveCfg = Debug|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.Release|ARM.ActiveCfg = Release|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.Release|iPhone.ActiveCfg = Release|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.Release|x64.ActiveCfg = Release|iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}.Release|x86.ActiveCfg = Release|iPhoneSimulator
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/XamlControlsGallery.iOS/XamlControlsGallery.iOS.csproj b/XamlControlsGallery.iOS/XamlControlsGallery.iOS.csproj
index 9ef7e5e..e2edb68 100644
--- a/XamlControlsGallery.iOS/XamlControlsGallery.iOS.csproj
+++ b/XamlControlsGallery.iOS/XamlControlsGallery.iOS.csproj
@@ -121,10 +121,10 @@
- 2.0.5-gd0f1a63314
+ 2.0.7-g3ba6a30145
-
-
+
+
diff --git a/XamlControlsGallery.macOS/AppDelegate.cs b/XamlControlsGallery.macOS/AppDelegate.cs
new file mode 100644
index 0000000..a205026
--- /dev/null
+++ b/XamlControlsGallery.macOS/AppDelegate.cs
@@ -0,0 +1,7 @@
+using AppKit;
+using Foundation;
+
+namespace XamlControlsGallery.macOS
+{
+
+}
diff --git a/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png b/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png
new file mode 100644
index 0000000..5757c31
Binary files /dev/null and b/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png differ
diff --git a/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png b/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png
new file mode 100644
index 0000000..d0fb357
Binary files /dev/null and b/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png differ
diff --git a/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png b/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png
new file mode 100644
index 0000000..17d637b
Binary files /dev/null and b/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png differ
diff --git a/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png b/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png
new file mode 100644
index 0000000..cf3a6e3
Binary files /dev/null and b/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png differ
diff --git a/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png b/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png
new file mode 100644
index 0000000..dcaaf7f
Binary files /dev/null and b/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png differ
diff --git a/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png b/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png
new file mode 100644
index 0000000..4810d2d
Binary files /dev/null and b/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png differ
diff --git a/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png b/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png
new file mode 100644
index 0000000..c02a226
Binary files /dev/null and b/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png differ
diff --git a/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png b/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png
new file mode 100644
index 0000000..d257b83
Binary files /dev/null and b/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png differ
diff --git a/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png b/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png
new file mode 100644
index 0000000..a909950
Binary files /dev/null and b/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png differ
diff --git a/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png b/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png
new file mode 100644
index 0000000..da4b8a9
Binary files /dev/null and b/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png differ
diff --git a/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/Contents.json b/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000..6b28545
--- /dev/null
+++ b/XamlControlsGallery.macOS/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,68 @@
+{
+ "images": [
+ {
+ "filename": "AppIcon-16.png",
+ "size": "16x16",
+ "scale": "1x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-16@2x.png",
+ "size": "16x16",
+ "scale": "2x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-32.png",
+ "size": "32x32",
+ "scale": "1x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-32@2x.png",
+ "size": "32x32",
+ "scale": "2x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-128.png",
+ "size": "128x128",
+ "scale": "1x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-128@2x.png",
+ "size": "128x128",
+ "scale": "2x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-256.png",
+ "size": "256x256",
+ "scale": "1x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-256@2x.png",
+ "size": "256x256",
+ "scale": "2x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-512.png",
+ "size": "512x512",
+ "scale": "1x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-512@2x.png",
+ "size": "512x512",
+ "scale": "2x",
+ "idiom": "mac"
+ }
+ ],
+ "info": {
+ "version": 1,
+ "author": "xcode"
+ }
+}
\ No newline at end of file
diff --git a/XamlControlsGallery.macOS/Assets.xcassets/Contents.json b/XamlControlsGallery.macOS/Assets.xcassets/Contents.json
new file mode 100644
index 0000000..4caf392
--- /dev/null
+++ b/XamlControlsGallery.macOS/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/XamlControlsGallery.macOS/Assets.xcassets/unologo.imageset/Contents.json b/XamlControlsGallery.macOS/Assets.xcassets/unologo.imageset/Contents.json
new file mode 100644
index 0000000..9b481d0
--- /dev/null
+++ b/XamlControlsGallery.macOS/Assets.xcassets/unologo.imageset/Contents.json
@@ -0,0 +1,528 @@
+{
+ "images": [
+ {
+ "idiom": "universal"
+ },
+ {
+ "scale": "1x",
+ "idiom": "universal"
+ },
+ {
+ "filename": "unoplatform.jpg",
+ "scale": "2x",
+ "idiom": "universal"
+ },
+ {
+ "scale": "3x",
+ "idiom": "universal"
+ },
+ {
+ "idiom": "iphone"
+ },
+ {
+ "scale": "1x",
+ "idiom": "iphone"
+ },
+ {
+ "scale": "2x",
+ "idiom": "iphone"
+ },
+ {
+ "subtype": "retina4",
+ "scale": "2x",
+ "idiom": "iphone"
+ },
+ {
+ "scale": "3x",
+ "idiom": "iphone"
+ },
+ {
+ "idiom": "ipad"
+ },
+ {
+ "scale": "1x",
+ "idiom": "ipad"
+ },
+ {
+ "scale": "2x",
+ "idiom": "ipad"
+ },
+ {
+ "idiom": "watch"
+ },
+ {
+ "scale": "2x",
+ "idiom": "watch"
+ },
+ {
+ "screenWidth": "{130,145}",
+ "scale": "2x",
+ "idiom": "watch"
+ },
+ {
+ "screenWidth": "{146,165}",
+ "scale": "2x",
+ "idiom": "watch"
+ },
+ {
+ "idiom": "mac"
+ },
+ {
+ "scale": "1x",
+ "idiom": "mac"
+ },
+ {
+ "scale": "2x",
+ "idiom": "mac"
+ },
+ {
+ "idiom": "car"
+ },
+ {
+ "scale": "2x",
+ "idiom": "car"
+ },
+ {
+ "scale": "3x",
+ "idiom": "car"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "dark"
+ }
+ ],
+ "idiom": "universal"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "dark"
+ }
+ ],
+ "scale": "1x",
+ "idiom": "universal"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "dark"
+ }
+ ],
+ "scale": "2x",
+ "idiom": "universal"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "dark"
+ }
+ ],
+ "scale": "3x",
+ "idiom": "universal"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "dark"
+ }
+ ],
+ "idiom": "iphone"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "dark"
+ }
+ ],
+ "scale": "1x",
+ "idiom": "iphone"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "dark"
+ }
+ ],
+ "scale": "2x",
+ "idiom": "iphone"
+ },
+ {
+ "subtype": "retina4",
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "dark"
+ }
+ ],
+ "scale": "2x",
+ "idiom": "iphone"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "dark"
+ }
+ ],
+ "scale": "3x",
+ "idiom": "iphone"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "dark"
+ }
+ ],
+ "idiom": "ipad"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "dark"
+ }
+ ],
+ "scale": "1x",
+ "idiom": "ipad"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "dark"
+ }
+ ],
+ "scale": "2x",
+ "idiom": "ipad"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "dark"
+ }
+ ],
+ "idiom": "watch"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "dark"
+ }
+ ],
+ "scale": "2x",
+ "idiom": "watch"
+ },
+ {
+ "screenWidth": "{130,145}",
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "dark"
+ }
+ ],
+ "scale": "2x",
+ "idiom": "watch"
+ },
+ {
+ "screenWidth": "{146,165}",
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "dark"
+ }
+ ],
+ "scale": "2x",
+ "idiom": "watch"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "dark"
+ }
+ ],
+ "idiom": "mac"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "dark"
+ }
+ ],
+ "scale": "1x",
+ "idiom": "mac"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "dark"
+ }
+ ],
+ "scale": "2x",
+ "idiom": "mac"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "dark"
+ }
+ ],
+ "idiom": "car"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "dark"
+ }
+ ],
+ "scale": "2x",
+ "idiom": "car"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "dark"
+ }
+ ],
+ "scale": "3x",
+ "idiom": "car"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "light"
+ }
+ ],
+ "idiom": "universal"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "light"
+ }
+ ],
+ "scale": "1x",
+ "idiom": "universal"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "light"
+ }
+ ],
+ "scale": "2x",
+ "idiom": "universal"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "light"
+ }
+ ],
+ "scale": "3x",
+ "idiom": "universal"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "light"
+ }
+ ],
+ "idiom": "iphone"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "light"
+ }
+ ],
+ "scale": "1x",
+ "idiom": "iphone"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "light"
+ }
+ ],
+ "scale": "2x",
+ "idiom": "iphone"
+ },
+ {
+ "subtype": "retina4",
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "light"
+ }
+ ],
+ "scale": "2x",
+ "idiom": "iphone"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "light"
+ }
+ ],
+ "scale": "3x",
+ "idiom": "iphone"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "light"
+ }
+ ],
+ "idiom": "ipad"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "light"
+ }
+ ],
+ "scale": "1x",
+ "idiom": "ipad"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "light"
+ }
+ ],
+ "scale": "2x",
+ "idiom": "ipad"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "light"
+ }
+ ],
+ "idiom": "watch"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "light"
+ }
+ ],
+ "scale": "2x",
+ "idiom": "watch"
+ },
+ {
+ "screenWidth": "{130,145}",
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "light"
+ }
+ ],
+ "scale": "2x",
+ "idiom": "watch"
+ },
+ {
+ "screenWidth": "{146,165}",
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "light"
+ }
+ ],
+ "scale": "2x",
+ "idiom": "watch"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "light"
+ }
+ ],
+ "idiom": "mac"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "light"
+ }
+ ],
+ "scale": "1x",
+ "idiom": "mac"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "light"
+ }
+ ],
+ "scale": "2x",
+ "idiom": "mac"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "light"
+ }
+ ],
+ "idiom": "car"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "light"
+ }
+ ],
+ "scale": "2x",
+ "idiom": "car"
+ },
+ {
+ "appearances": [
+ {
+ "appearance": "luminosity",
+ "value": "light"
+ }
+ ],
+ "scale": "3x",
+ "idiom": "car"
+ }
+ ],
+ "info": {
+ "version": 1,
+ "author": "xcode"
+ }
+}
\ No newline at end of file
diff --git a/XamlControlsGallery.macOS/Assets.xcassets/unologo.imageset/unoplatform.jpg b/XamlControlsGallery.macOS/Assets.xcassets/unologo.imageset/unoplatform.jpg
new file mode 100644
index 0000000..da3230e
Binary files /dev/null and b/XamlControlsGallery.macOS/Assets.xcassets/unologo.imageset/unoplatform.jpg differ
diff --git a/XamlControlsGallery.macOS/Entitlements.plist b/XamlControlsGallery.macOS/Entitlements.plist
new file mode 100644
index 0000000..fa00fff
--- /dev/null
+++ b/XamlControlsGallery.macOS/Entitlements.plist
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/XamlControlsGallery.macOS/Info.plist b/XamlControlsGallery.macOS/Info.plist
new file mode 100644
index 0000000..85c13b8
--- /dev/null
+++ b/XamlControlsGallery.macOS/Info.plist
@@ -0,0 +1,32 @@
+
+
+
+
+ CFBundleName
+ XamlControlsGallery.macOS
+ CFBundleIdentifier
+ com.companyname.XamlControlsGallery-macOS
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1
+ LSMinimumSystemVersion
+ 10.11
+ CFBundleDevelopmentRegion
+ en
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundlePackageType
+ APPL
+ CFBundleSignature
+ ????
+ NSHumanReadableCopyright
+ ${AuthorCopyright:HtmlEncode}
+ NSPrincipalClass
+ NSApplication
+ XSAppIconAssets
+ Assets.xcassets/AppIcon.appiconset
+ ATSApplicationFontsPath
+ Fonts/winjs-symbols.ttf
+
+
diff --git a/XamlControlsGallery.macOS/Main.cs b/XamlControlsGallery.macOS/Main.cs
new file mode 100644
index 0000000..96653b1
--- /dev/null
+++ b/XamlControlsGallery.macOS/Main.cs
@@ -0,0 +1,15 @@
+using AppKit;
+
+namespace AppUIBasics.macOS
+{
+ static class MainClass
+ {
+ static void Main(string[] args)
+ {
+ NSApplication.Init();
+ NSApplication.SharedApplication.Delegate = new App();
+ NSApplication.Main(args);
+ }
+ }
+}
+
diff --git a/XamlControlsGallery.macOS/Properties/AssemblyInfo.cs b/XamlControlsGallery.macOS/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..b3a6b4a
--- /dev/null
+++ b/XamlControlsGallery.macOS/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("$projectname$")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("$registeredorganization$")]
+[assembly: AssemblyProduct("$projectname$")]
+[assembly: AssemblyCopyright("Copyright © $registeredorganization$ $year$")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("166de4ca-8f11-4ef9-bcf8-3e7834988e7d")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/XamlControlsGallery.macOS/Resources/Fonts/winjs-symbols.ttf b/XamlControlsGallery.macOS/Resources/Fonts/winjs-symbols.ttf
new file mode 100644
index 0000000..118f5c4
Binary files /dev/null and b/XamlControlsGallery.macOS/Resources/Fonts/winjs-symbols.ttf differ
diff --git a/XamlControlsGallery.macOS/XamlControlsGallery.macOS.csproj b/XamlControlsGallery.macOS/XamlControlsGallery.macOS.csproj
new file mode 100644
index 0000000..d81817d
--- /dev/null
+++ b/XamlControlsGallery.macOS/XamlControlsGallery.macOS.csproj
@@ -0,0 +1,134 @@
+
+
+
+ Debug
+ iPhoneSimulator
+ {313FCF91-A6DB-4585-A23E-49BBEEF4784D}
+ {A3F8F2AB-B479-4A4A-A458-A89E7DC349F1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ Exe
+ XamlControlsGallery.macOS
+ XamlControlsGallery.macOS
+ v2.0
+ Xamarin.Mac
+ Resources
+
+
+ true
+ full
+ false
+ bin\Debug
+ DEBUG
+ prompt
+ 4
+ false
+ Mac Developer
+ false
+ false
+ false
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+
+
+ false
+ pdbonly
+ true
+ bin\Release
+
+
+ prompt
+ 4
+ false
+ true
+ false
+ true
+ true
+ true
+ SdkOnly
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2.0.7-g3ba6a30145
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Always
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file