diff --git a/DevopsNuget.config b/DevopsNuget.config
new file mode 100644
index 00000000000..ad639f6d1fa
--- /dev/null
+++ b/DevopsNuget.config
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Directory.Build.props b/Directory.Build.props
index eae9f439806..99a4fa8aad6 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -21,4 +21,4 @@
-
\ No newline at end of file
+
diff --git a/Directory.Build.targets b/Directory.Build.targets
index 85f1a8f91f0..1dec7b905d5 100644
--- a/Directory.Build.targets
+++ b/Directory.Build.targets
@@ -3,6 +3,5 @@
-
diff --git a/Environment.Build.props b/Environment.Build.props
index c0c6de77cfd..04101372825 100644
--- a/Environment.Build.props
+++ b/Environment.Build.props
@@ -5,6 +5,7 @@
+
false
true
@@ -19,6 +20,18 @@
-->
+
+ <_XamarinFormsVersion>$(BUILD_BUILDNUMBER.Split(`+`)[0])
+ $(_XamarinFormsVersion)
+
+
+
+
+
+ false
+ true
+
+
$(FrameworkSDKRoot.Contains('/Versions/5'))
true
@@ -30,4 +43,4 @@
MonoAndroid90;
MonoAndroid90;MonoAndroid10.0;
-
\ No newline at end of file
+
diff --git a/Nuget.targets b/Nuget.targets
new file mode 100644
index 00000000000..518a38de3f0
--- /dev/null
+++ b/Nuget.targets
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Nuget/.gitignore b/Nuget/.gitignore
new file mode 100644
index 00000000000..86d0cb2726c
--- /dev/null
+++ b/Nuget/.gitignore
@@ -0,0 +1,4 @@
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
\ No newline at end of file
diff --git a/Stubs/Xamarin.Forms.Platform.iOS/Xamarin.Forms.Platform.iOS (Forwarders).csproj b/Stubs/Xamarin.Forms.Platform.iOS/Xamarin.Forms.Platform.iOS (Forwarders).csproj
index a5cd4c8a4d4..e292bec2f54 100644
--- a/Stubs/Xamarin.Forms.Platform.iOS/Xamarin.Forms.Platform.iOS (Forwarders).csproj
+++ b/Stubs/Xamarin.Forms.Platform.iOS/Xamarin.Forms.Platform.iOS (Forwarders).csproj
@@ -2,7 +2,7 @@
Debug
- iPhoneSimulator
+ AnyCPU
8.0.30703
2.0
{39B3457F-01D8-43D0-8E84-D8C4F73CF48D}
diff --git a/Xamarin.Forms.ControlGallery.Android/Android10.Build.targets b/Xamarin.Forms.ControlGallery.Android/Android10.Build.targets
index c4731bd35f2..0f258c7e3ff 100644
--- a/Xamarin.Forms.ControlGallery.Android/Android10.Build.targets
+++ b/Xamarin.Forms.ControlGallery.Android/Android10.Build.targets
@@ -1,12 +1,12 @@
-
- 1.0.0
-
-
-
-
-
-
+
+ 1.0.0
+
+
+
+
+
+
-
\ No newline at end of file
+
diff --git a/Xamarin.Forms.ControlGallery.Android/Directory.Build.targets b/Xamarin.Forms.ControlGallery.Android/Directory.Build.targets
index fe3b8e64991..680415c9bd3 100644
--- a/Xamarin.Forms.ControlGallery.Android/Directory.Build.targets
+++ b/Xamarin.Forms.ControlGallery.Android/Directory.Build.targets
@@ -1,3 +1,6 @@
-
\ No newline at end of file
+
+
+
+
diff --git a/Xamarin.Forms.ControlGallery.Android/Nuget2017.Build.targets b/Xamarin.Forms.ControlGallery.Android/Nuget2017.Build.targets
new file mode 100644
index 00000000000..d5c7b72cec8
--- /dev/null
+++ b/Xamarin.Forms.ControlGallery.Android/Nuget2017.Build.targets
@@ -0,0 +1,7 @@
+
+
+
+ 0.4.11
+
+
+
\ No newline at end of file
diff --git a/Xamarin.Forms.ControlGallery.Android/Nuget2019.Build.targets b/Xamarin.Forms.ControlGallery.Android/Nuget2019.Build.targets
new file mode 100644
index 00000000000..02369be4461
--- /dev/null
+++ b/Xamarin.Forms.ControlGallery.Android/Nuget2019.Build.targets
@@ -0,0 +1,17 @@
+
+
+
+ 0.7.1
+
+
+
+
+ 1.0.0
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Xamarin.Forms.ControlGallery.Android/PlatformSpecificCoreGalleryFactory.cs b/Xamarin.Forms.ControlGallery.Android/PlatformSpecificCoreGalleryFactory.cs
index bb739bd7c01..d5a5df24af5 100644
--- a/Xamarin.Forms.ControlGallery.Android/PlatformSpecificCoreGalleryFactory.cs
+++ b/Xamarin.Forms.ControlGallery.Android/PlatformSpecificCoreGalleryFactory.cs
@@ -3,11 +3,13 @@
using Xamarin.Forms;
using Xamarin.Forms.ControlGallery.Android;
using Xamarin.Forms.Controls;
+using Xamarin.Forms.Internals;
[assembly: Dependency(typeof(PlatformSpecificCoreGalleryFactory))]
namespace Xamarin.Forms.ControlGallery.Android
{
+ [Preserve(AllMembers = true)]
public class PlatformSpecificCoreGalleryFactory : IPlatformSpecificCoreGalleryFactory
{
public string Title => "Android Core Gallery";
diff --git a/Xamarin.Forms.ControlGallery.Android/Xamarin.Forms.ControlGallery.Android.csproj b/Xamarin.Forms.ControlGallery.Android/Xamarin.Forms.ControlGallery.Android.csproj
index 5b3f5ffc40c..673c2bdfb2e 100644
--- a/Xamarin.Forms.ControlGallery.Android/Xamarin.Forms.ControlGallery.Android.csproj
+++ b/Xamarin.Forms.ControlGallery.Android/Xamarin.Forms.ControlGallery.Android.csproj
@@ -28,7 +28,6 @@
true
False
-
@@ -37,7 +36,6 @@
$(DefineConstants);FORMS_APPLICATION_ACTIVITY
$(DefineConstants)
-
$(DefineConstants);HAVE_OPENTK
True
@@ -194,11 +192,7 @@
-
-
- {6e53feb1-1100-46ae-8013-17bba35cc197}
- Xamarin.Forms.Platform.Android (Forwarders)
-
+
{cb9c96ce-125c-4a68-b6a1-c3ff1fbf93e1}
Xamarin.Forms.Controls
@@ -207,6 +201,15 @@
{4dcd0420-1168-4b77-86db-6196ee4bd491}
Xamarin.Forms.CustomAttributes
+
+
+
+ proguard.cfg
+
+
+ {6e53feb1-1100-46ae-8013-17bba35cc197}
+ Xamarin.Forms.Platform.Android (Forwarders)
+
{fb4a866a-5721-4545-9e5d-b7f7d59875a4}
Xamarin.Forms.DualScreen
@@ -358,9 +361,6 @@
3.0.2
-
- 0.7.1
-
@@ -394,11 +394,6 @@
-
-
- proguard.cfg
-
-
@@ -424,11 +419,11 @@
-
+
-
\ No newline at end of file
+
diff --git a/Xamarin.Forms.ControlGallery.WindowsUniversal/Directory.Build.targets b/Xamarin.Forms.ControlGallery.WindowsUniversal/Directory.Build.targets
new file mode 100644
index 00000000000..6f72129c885
--- /dev/null
+++ b/Xamarin.Forms.ControlGallery.WindowsUniversal/Directory.Build.targets
@@ -0,0 +1,3 @@
+
+
+
diff --git a/Xamarin.Forms.ControlGallery.WindowsUniversal/Xamarin.Forms.ControlGallery.WindowsUniversal.csproj b/Xamarin.Forms.ControlGallery.WindowsUniversal/Xamarin.Forms.ControlGallery.WindowsUniversal.csproj
index 9eddad9111b..e9e0f8bc8f3 100644
--- a/Xamarin.Forms.ControlGallery.WindowsUniversal/Xamarin.Forms.ControlGallery.WindowsUniversal.csproj
+++ b/Xamarin.Forms.ControlGallery.WindowsUniversal/Xamarin.Forms.ControlGallery.WindowsUniversal.csproj
@@ -101,6 +101,14 @@
{cb9c96ce-125c-4a68-b6a1-c3ff1fbf93e1}
Xamarin.Forms.Controls
+
+
+
+ {4dcd0420-1168-4b77-86db-6196ee4bd491}
+ Xamarin.Forms.CustomAttributes
+
+
+
{57b8b73d-c3b5-4c42-869e-7b2f17d354ac}
Xamarin.Forms.Core
diff --git a/Xamarin.Forms.ControlGallery.iOS/Directory.Build.targets b/Xamarin.Forms.ControlGallery.iOS/Directory.Build.targets
new file mode 100644
index 00000000000..6f72129c885
--- /dev/null
+++ b/Xamarin.Forms.ControlGallery.iOS/Directory.Build.targets
@@ -0,0 +1,3 @@
+
+
+
diff --git a/Xamarin.Forms.ControlGallery.iOS/Xamarin.Forms.ControlGallery.iOS.csproj b/Xamarin.Forms.ControlGallery.iOS/Xamarin.Forms.ControlGallery.iOS.csproj
index f4707d9b6a1..4299dc31c90 100644
--- a/Xamarin.Forms.ControlGallery.iOS/Xamarin.Forms.ControlGallery.iOS.csproj
+++ b/Xamarin.Forms.ControlGallery.iOS/Xamarin.Forms.ControlGallery.iOS.csproj
@@ -1,7 +1,9 @@
+
Debug
+ iPhone
iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}
{FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
@@ -159,6 +161,14 @@
{cb9c96ce-125c-4a68-b6a1-c3ff1fbf93e1}
Xamarin.Forms.Controls
+
+
+
+ {4dcd0420-1168-4b77-86db-6196ee4bd491}
+ Xamarin.Forms.CustomAttributes
+
+
+
{fb4a866a-5721-4545-9e5d-b7f7d59875a4}
Xamarin.Forms.DualScreen
@@ -439,4 +449,4 @@
-
\ No newline at end of file
+
diff --git a/Xamarin.Forms.Controls/Directory.Build.props b/Xamarin.Forms.Controls/Directory.Build.props
index ef994776379..5fa729b6773 100644
--- a/Xamarin.Forms.Controls/Directory.Build.props
+++ b/Xamarin.Forms.Controls/Directory.Build.props
@@ -1,4 +1,4 @@
-
+
diff --git a/Xamarin.Forms.Controls/Directory.Build.targets b/Xamarin.Forms.Controls/Directory.Build.targets
index 804a384f08c..10989cede11 100644
--- a/Xamarin.Forms.Controls/Directory.Build.targets
+++ b/Xamarin.Forms.Controls/Directory.Build.targets
@@ -1,4 +1,5 @@
-
-
+
+
+
diff --git a/Xamarin.Forms.Controls/Nuget.Build.targets b/Xamarin.Forms.Controls/Nuget.Build.targets
new file mode 100644
index 00000000000..074e0a355e9
--- /dev/null
+++ b/Xamarin.Forms.Controls/Nuget.Build.targets
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Xamarin.Forms.Controls/Source.Build.targets b/Xamarin.Forms.Controls/Source.Build.targets
new file mode 100644
index 00000000000..b79ec209eda
--- /dev/null
+++ b/Xamarin.Forms.Controls/Source.Build.targets
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Xamarin.Forms.Controls/Xamarin.Forms.Controls.csproj b/Xamarin.Forms.Controls/Xamarin.Forms.Controls.csproj
index 455f0b21c5f..a67aeec73a4 100644
--- a/Xamarin.Forms.Controls/Xamarin.Forms.Controls.csproj
+++ b/Xamarin.Forms.Controls/Xamarin.Forms.Controls.csproj
@@ -27,7 +27,7 @@
-
+
@@ -35,6 +35,9 @@
+
+
+
@@ -91,4 +94,4 @@
-
+
\ No newline at end of file
diff --git a/Xamarin.Forms.DualScreen/DualScreenService.android.cs b/Xamarin.Forms.DualScreen/DualScreenService.android.cs
index 2f37850ee23..7ccee81eaad 100644
--- a/Xamarin.Forms.DualScreen/DualScreenService.android.cs
+++ b/Xamarin.Forms.DualScreen/DualScreenService.android.cs
@@ -14,6 +14,12 @@ namespace Xamarin.Forms.DualScreen
{
public class DualScreenService
{
+ [Internals.Preserve(Conditional = true)]
+ public DualScreenService()
+ {
+
+ }
+
public static void Init(Activity activity)
{
DependencyService.Register();
@@ -34,6 +40,7 @@ internal class DualScreenServiceImpl : IDualScreenService, Platform.Android.Dual
object _hingeAngleLock = new object();
TaskCompletionSource _gettingHingeAngle;
+ [Internals.Preserve(Conditional = true)]
public DualScreenServiceImpl()
{
_HingeService = this;
diff --git a/Xamarin.Forms.Maps.Android/Xamarin.Forms.Maps.Android.csproj b/Xamarin.Forms.Maps.Android/Xamarin.Forms.Maps.Android.csproj
index 3fc56907b6c..d0639e7dd3e 100644
--- a/Xamarin.Forms.Maps.Android/Xamarin.Forms.Maps.Android.csproj
+++ b/Xamarin.Forms.Maps.Android/Xamarin.Forms.Maps.Android.csproj
@@ -37,4 +37,4 @@
-
\ No newline at end of file
+
diff --git a/Xamarin.Forms.Maps.iOS/Xamarin.Forms.Maps.iOS.csproj b/Xamarin.Forms.Maps.iOS/Xamarin.Forms.Maps.iOS.csproj
index 3612dd456e4..722bb30c526 100644
--- a/Xamarin.Forms.Maps.iOS/Xamarin.Forms.Maps.iOS.csproj
+++ b/Xamarin.Forms.Maps.iOS/Xamarin.Forms.Maps.iOS.csproj
@@ -2,7 +2,7 @@
Debug
- iPhoneSimulator
+ AnyCPU
8.0.30703
2.0
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}
@@ -71,4 +71,4 @@
-
\ No newline at end of file
+
diff --git a/Xamarin.Forms.Material.iOS/Xamarin.Forms.Material.iOS.csproj b/Xamarin.Forms.Material.iOS/Xamarin.Forms.Material.iOS.csproj
index d62ae0b39a2..586f2c558e8 100644
--- a/Xamarin.Forms.Material.iOS/Xamarin.Forms.Material.iOS.csproj
+++ b/Xamarin.Forms.Material.iOS/Xamarin.Forms.Material.iOS.csproj
@@ -100,4 +100,4 @@
-
\ No newline at end of file
+
diff --git a/Xamarin.Forms.Pages.Azure/Xamarin.Forms.Pages.Azure.csproj b/Xamarin.Forms.Pages.Azure/Xamarin.Forms.Pages.Azure.csproj
index 579346563c6..875c7a62c17 100644
--- a/Xamarin.Forms.Pages.Azure/Xamarin.Forms.Pages.Azure.csproj
+++ b/Xamarin.Forms.Pages.Azure/Xamarin.Forms.Pages.Azure.csproj
@@ -3,8 +3,7 @@
netstandard2.0;netstandard1.4
-
- 4.1.1
+
diff --git a/Xamarin.Forms.Pages/Xamarin.Forms.Pages.csproj b/Xamarin.Forms.Pages/Xamarin.Forms.Pages.csproj
index 58d55280a7f..b53ea950b08 100644
--- a/Xamarin.Forms.Pages/Xamarin.Forms.Pages.csproj
+++ b/Xamarin.Forms.Pages/Xamarin.Forms.Pages.csproj
@@ -7,8 +7,7 @@
-
- 11.0.2
+
diff --git a/Xamarin.Forms.Platform.iOS/Renderers/ActivityIndicatorRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/ActivityIndicatorRenderer.cs
index 3ad66cd52c1..537185cb9d8 100644
--- a/Xamarin.Forms.Platform.iOS/Renderers/ActivityIndicatorRenderer.cs
+++ b/Xamarin.Forms.Platform.iOS/Renderers/ActivityIndicatorRenderer.cs
@@ -62,4 +62,4 @@ internal void PreserveState()
Control.StartAnimating();
}
}
-}
\ No newline at end of file
+}
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index b807b2fdd1e..7bfac430401 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -26,7 +26,7 @@ variables:
resources:
repositories:
- - repository: xamarin-templates
+ - repository: xamarin-templates
type: github
name: xamarin/yaml-templates
endpoint: xamarin
@@ -59,96 +59,90 @@ schedules:
include:
- master
-jobs:
-- template: build/steps/build-windows.yml
- parameters:
- name: win
- displayName: Build Windows Phase
- vmImage: $(win2019VmImage)
- provisionatorPath : 'build/provisioning/provisioning.csx'
+stages:
+ - stage: windows
+ displayName: Build Windows
+ jobs:
+ - template: build/steps/build-windows.yml
+ parameters:
+ name: win
+ displayName: Build Windows Phase
+ vmImage: $(win2019VmImage)
+ provisionatorPath : 'build/provisioning/provisioning.csx'
+ - job: nuget_pack
+ workspace:
+ clean: all
+ dependsOn:
+ - win
+ displayName: Nuget Phase
+ condition: succeeded()
+ pool:
+ name: $(win2019VmImage)
+ variables:
+ FormsIdAppend: ''
+ buildConfiguration: $(DefaultBuildConfiguration)
+ nugetPackageVersion : $[ dependencies.win.outputs['debug.winbuild.xamarinformspackageversion'] ]
+ steps:
+ - template: build/steps/build-nuget.yml
-- template: build/steps/build-android.yml
- parameters:
- name: android_legacy
- displayName: Build Android [Legacy Renderers]
- vmImage: $(macOSVmImage)
- targetFolder: Xamarin.Forms.ControlGallery.Android/legacyRenderers/
- androidProjectArguments: '/t:"Rebuild;SignAndroidPackage" /p:ANDROID_RENDERERS="LEGACY" /bl:$(Build.ArtifactStagingDirectory)/android-legacy.binlog'
- buildConfiguration: $(AndroidBuildConfiguration)
- provisionatorPath : 'build/provisioning/provisioning.csx'
+ - stage: android
+ displayName: Build Android
+ ${{ if eq(variables['System.TeamProject'], 'devdiv') }}:
+ dependsOn: windows
+ ${{ if eq(variables['System.TeamProject'], 'public') }}:
+ dependsOn: []
+ jobs:
+ - template: build/steps/build-android.yml
+ parameters:
+ vmImage: $(macOSVmImage)
+ provisionatorPath : 'build/provisioning/provisioning.csx'
-- template: build/steps/build-android.yml
- parameters:
- name: android_preappcompact
- displayName: Build Android [Pre-AppCompat]
- vmImage: $(macOSVmImage)
- targetFolder: Xamarin.Forms.ControlGallery.Android/preAppCompat
- androidProjectArguments: '/t:"Rebuild;SignAndroidPackage" /p:ANDROID_RENDERERS="PREAPPCOMPAT" /bl:$(Build.ArtifactStagingDirectory)/android-preappcompact.binlog'
- buildConfiguration: $(AndroidBuildConfiguration)
- provisionatorPath : 'build/provisioning/provisioning.csx'
-
-- template: build/steps/build-android.yml
- parameters:
- name: android_fast
- displayName: Build Android [Fast Renderers]
- vmImage: $(macOSVmImage)
- targetFolder: Xamarin.Forms.ControlGallery.Android/newRenderers/
- androidProjectArguments: '/t:"Rebuild;SignAndroidPackage" /p:ANDROID_RENDERERS="FAST" /bl:$(Build.ArtifactStagingDirectory)/android-newrenderers.binlog'
- buildConfiguration: $(AndroidBuildConfiguration)
- provisionatorPath : 'build/provisioning/provisioning.csx'
-
-- job: osx
- workspace:
- clean: all
- displayName: OSX Phase
- pool:
- name: $(macOSVmImage)
- demands:
- - Agent.OS -equals darwin
- - sh
- - msbuild
- - Xamarin.iOS
- strategy:
- matrix:
- BuildForVS2017:
- buildForVS2017: 'true'
- BuildForVS2019:
- buildForVS2017: 'false'
- variables:
- provisionator.osxPath : 'build/provisioning/provisioning.csx'
- provisionator.signPath : 'build/provisioning/provisioning_sign.csx'
- buildConfiguration: $(DefaultBuildConfiguration)
- slnPath: $(SolutionFile)
- iOSCertSecureFileName: 'Xamarin Forms iOS Certificate.p12'
- iOSProvisioningSecureFileName: 'Xamarin Forms iOS Provisioning.mobileprovision'
- buildForVS2017: $(buildForVS2017)
- steps:
- - template: build/steps/build-osx.yml
-
-- job: nuget_pack
- workspace:
- clean: all
- displayName: Nuget Phase
- dependsOn:
- - win
- condition: succeeded()
- pool:
- name: $(winVmImage)
- variables:
- FormsIdAppend: ''
- buildConfiguration: $(DefaultBuildConfiguration)
- nugetPackageVersion : $[ dependencies.win.outputs['debug.winbuild.xamarinformspackageversion'] ]
- steps:
- - template: build/steps/build-nuget.yml
+ - stage: build_osx
+ displayName: Build OSX
+ ${{ if eq(variables['System.TeamProject'], 'devdiv') }}:
+ dependsOn: windows
+ ${{ if eq(variables['System.TeamProject'], 'public') }}:
+ dependsOn: []
+ jobs:
+ - job: osx
+ workspace:
+ clean: all
+ displayName: OSX Phase
+ pool:
+ name: $(macOSVmImage)
+ demands:
+ - Agent.OS -equals darwin
+ - sh
+ - msbuild
+ - Xamarin.iOS
+ strategy:
+ matrix:
+ BuildForVS2017:
+ buildForVS2017: 'true'
+ BuildForVS2019:
+ buildForVS2017: 'false'
+ variables:
+ provisionator.osxPath : 'build/provisioning/provisioning.csx'
+ provisionator.signPath : 'build/provisioning/provisioning_sign.csx'
+ buildConfiguration: $(DefaultBuildConfiguration)
+ iOSCertSecureFileName: 'Xamarin Forms iOS Certificate.p12'
+ iOSProvisioningSecureFileName: 'Xamarin Forms iOS Provisioning.mobileprovision'
+ buildForVS2017: $(buildForVS2017)
+ steps:
+ - template: build/steps/build-osx.yml
# only sign using the private server
-- ${{ if eq(variables['System.TeamProject'], 'devdiv') }}:
- - job: nuget_sign
- displayName: Sign Phase
- dependsOn: nuget_pack
- pool:
- name: $(signVmImage)
- steps:
- - template: build/steps/build-sign.yml
- condition: and(succeeded(), or(eq(variables['Sign'], 'true'), or(eq(variables['Build.SourceBranch'], 'refs/heads/master'), startsWith(variables['Build.SourceBranch'],'refs/tags/'))))
+ - ${{ if eq(variables['System.TeamProject'], 'devdiv') }}:
+ - stage: nuget_signing
+ dependsOn: windows
+ displayName: Sign Nuget
+ jobs:
+ - job: nuget_sign
+ displayName: Sign Phase
+ pool:
+ name: $(signVmImage)
+ steps:
+ - template: build/steps/build-sign.yml
+ condition: and(succeeded(), or(eq(variables['Sign'], 'true'), or(eq(variables['Build.SourceBranch'], 'refs/heads/master'), startsWith(variables['Build.SourceBranch'],'refs/tags/'))))
+
diff --git a/build.cake b/build.cake
index d98f974b14c..9ecaca7881e 100644
--- a/build.cake
+++ b/build.cake
@@ -68,7 +68,7 @@ string monoPatchVersion = "";
string monoMajorVersion = "";
string monoVersion = "";
-if(buildForVS2017)
+if(buildForVS2017 || teamProject == "DevDiv")
{
// VS2017
monoMajorVersion = "5.18.1";
diff --git a/build/steps/build-android.yml b/build/steps/build-android.yml
index 2ea2cdde218..1bc9ca3c944 100644
--- a/build/steps/build-android.yml
+++ b/build/steps/build-android.yml
@@ -3,19 +3,15 @@ parameters:
displayName: '' # the human name
vmImage: '' # the VM image
vmPool: '' # the VM pool
- targetFolder: '' # the bootstrapper target
dependsOn: [] # the dependiencies
preBuildSteps: [] # any steps to run before the build
postBuildSteps: [] # any additional steps to run after the build
slnPath : 'Xamarin.Forms.sln'
buildTaskPath : 'Xamarin.Forms.Build.Tasks/Xamarin.Forms.Build.Tasks.csproj'
- androidPath : 'Xamarin.Forms.ControlGallery.Android'
androidProjectPath : 'Xamarin.Forms.ControlGallery.Android/Xamarin.Forms.ControlGallery.Android.csproj'
- androidProjectArguments : ''
buildConfiguration : 'Debug'
nugetVersion: $(NUGET_VERSION)
monoVersion: $(MONO_VERSION)
- apkTargetFolder: '$(build.artifactstagingdirectory)/androidApp'
provisionatorPath: 'build/provisioning/provisioning.csx'
provisionatorExtraArguments: ''
@@ -28,6 +24,17 @@ jobs:
pool:
name: ${{ parameters.vmImage }}
dependsOn: ${{ parameters.dependsOn }}
+ strategy:
+ matrix:
+ android_legacy:
+ renderers: 'LEGACY'
+ outputfolder: 'legacyRenderers'
+ android_preAppCompat:
+ renderers: 'PREAPPCOMPAT'
+ outputfolder: 'preAppCompat'
+ android_newRenderers:
+ renderers: 'FAST'
+ outputfolder: 'newRenderers'
steps:
- checkout: self
clean: true
@@ -45,7 +52,7 @@ jobs:
inputs:
targetType: 'filePath'
filePath: 'build.sh'
- arguments: --target provision
+ arguments: --target provision --TeamProject="$(System.TeamProject)"
- task: UseDotNet@2
displayName: 'Install .net core $(DOTNET_VERSION)'
@@ -62,11 +69,27 @@ jobs:
condition: ne(variables['NUGET_VERSION'], '')
inputs:
versionSpec: $(NUGET_VERSION)
+
+ - task: DownloadBuildArtifacts@0
+ displayName: 'Download build artifact nuget'
+ condition: eq(variables['System.TeamProject'], 'DevDiv')
+ inputs:
+ artifactName: 'nuget'
+ downloadPath: 'Nuget'
+
+ - task: CopyFiles@2
+ displayName: 'Copy Files to: $(System.DefaultWorkingDirectory)'
+ condition: eq(variables['System.TeamProject'], 'DevDiv')
+ inputs:
+ SourceFolder: 'Nuget/nuget/${{ parameters.buildConfiguration }}'
+ TargetFolder: 'Nuget'
- task: NuGetCommand@2
displayName: 'NuGet restore ${{ parameters.slnPath }}'
inputs:
restoreSolution: ${{ parameters.slnPath }}
+ feedsToUse: config
+ nugetConfigPath: 'DevopsNuget.config'
- task: MSBuild@1
displayName: 'Build ${{ parameters.buildTaskPath }}'
@@ -75,27 +98,27 @@ jobs:
configuration: ${{ parameters.buildConfiguration }}
- task: MSBuild@1
- displayName: 'Build Android ${{ parameters.name }}'
+ displayName: 'Build Android $(renderers)'
inputs:
solution: ${{ parameters.androidProjectPath }}
configuration: ${{ parameters.buildConfiguration }}
- msbuildArguments: ${{ parameters.androidProjectArguments }}
+ msbuildArguments: '/t:"Rebuild;SignAndroidPackage" /p:ANDROID_RENDERERS="$(renderers)" /bl:$(Build.ArtifactStagingDirectory)/android-$(renderers).binlog'
- task: CopyFiles@2
- displayName: 'Copy ${{ parameters.name }}'
+ displayName: 'Copy $(renderers)'
inputs:
- SourceFolder: ${{ parameters.androidPath }}/bin/${{ parameters.buildConfiguration }}/
+ SourceFolder: Xamarin.Forms.ControlGallery.Android/bin/${{ parameters.buildConfiguration }}/
Contents: '**/*.apk'
- TargetFolder: ${{ parameters.targetFolder }}
+ TargetFolder: 'Xamarin.Forms.ControlGallery.Android/$(outputfolder)/'
CleanTargetFolder: true
OverWrite: true
- task: CopyFiles@2
- displayName: 'Copy Android apk ${{ parameters.name }} for UITest'
+ displayName: 'Copy Android apk $(renderers) for UITest'
inputs:
Contents: |
- ${{ parameters.targetFolder }}/$(ApkName)
- TargetFolder: ${{ parameters.apkTargetFolder }}
+ Xamarin.Forms.ControlGallery.Android/$(outputfolder)/$(ApkName)
+ TargetFolder: '$(build.artifactstagingdirectory)/androidApp'
CleanTargetFolder: true
- task: PublishBuildArtifacts@1
diff --git a/build/steps/build-osx.yml b/build/steps/build-osx.yml
index 93937347375..611e20399a2 100644
--- a/build/steps/build-osx.yml
+++ b/build/steps/build-osx.yml
@@ -15,7 +15,7 @@ steps:
inputs:
targetType: 'filePath'
filePath: 'build.sh'
- arguments: --target provision --buildForVS2017=$(buildForVS2017)
+ arguments: --target provision --TeamProject="$(System.TeamProject)" --buildForVS2017=$(buildForVS2017)
- task: UseDotNet@2
displayName: 'Install .net core $(DOTNET_VERSION)'
@@ -29,16 +29,34 @@ steps:
condition: ne(variables['NUGET_VERSION'], '')
inputs:
versionSpec: $(NUGET_VERSION)
+
+ - task: DownloadBuildArtifacts@0
+ displayName: 'Download build artifact nuget'
+ condition: eq(variables['System.TeamProject'], 'DevDiv')
+ inputs:
+ artifactName: 'nuget'
+ downloadPath: '$(Build.ArtifactsDirectory)'
+
+ - task: CopyFiles@2
+ displayName: 'Copy Files to: $(System.DefaultWorkingDirectory)'
+ condition: eq(variables['System.TeamProject'], 'DevDiv')
+ inputs:
+ SourceFolder: '$(Build.ArtifactsDirectory)/nuget/$(buildConfiguration)'
+ TargetFolder: '$(System.DefaultWorkingDirectory)/Nuget'
- task: NuGetCommand@2
displayName: 'NuGet restore'
inputs:
- restoreSolution: $(slnPath)
+ command: restore
+ restoreSolution: 'Xamarin.Forms.sln'
+ feedsToUse: config
+ nugetConfigPath: 'DevopsNuget.config'
- task: MSBuild@1
displayName: 'Build solution Xamarin.Forms.Build.Tasks/Xamarin.Forms.Build.Tasks.csproj'
inputs:
solution: Xamarin.Forms.Build.Tasks/Xamarin.Forms.Build.Tasks.csproj
+ msbuildArguments: /bl:$(Build.ArtifactStagingDirectory)/tasks.binlog
- task: InstallAppleCertificate@2
displayName: 'Install an Apple certificate'
@@ -51,13 +69,26 @@ steps:
inputs:
provProfileSecureFile: 'Xamarin Forms iOS Provisioning.mobileprovision'
- - task: XamariniOS@2
- displayName: 'Build Xamarin.iOS solution $(slnPath)'
+ - task: MSBuild@1
+ displayName: 'Build Control Gallery IPA'
+ inputs:
+ solution: 'Xamarin.Forms.ControlGallery.iOS/Xamarin.Forms.ControlGallery.iOS.csproj'
+ configuration: $(buildConfiguration)
+ msbuildArguments: /bl:$(Build.ArtifactStagingDirectory)/ios-cg.binlog /p:BuildIpa=true
+
+ - task: MSBuild@1
+ displayName: 'Build iOS Tests'
inputs:
- solutionFile: $(slnPath)
+ solution: 'Xamarin.Forms.Core.iOS.UITests/Xamarin.Forms.Core.iOS.UITests.csproj'
configuration: $(buildConfiguration)
- args: /bl:$(Build.ArtifactStagingDirectory)/ios-2017_$(buildForVS2017).binlog
+ msbuildArguments: /bl:$(Build.ArtifactStagingDirectory)/ios-uitests.binlog
+ - task: MSBuild@1
+ displayName: 'Build Android Tests'
+ inputs:
+ solution: 'Xamarin.Forms.Core.Android.UITests/Xamarin.Forms.Core.Android.UITests.csproj'
+ configuration: $(buildConfiguration)
+ msbuildArguments: /bl:$(Build.ArtifactStagingDirectory)/android-uitests.binlog
- task: CopyFiles@2
displayName: 'Copy test-cloud.exe'
@@ -108,4 +139,4 @@ steps:
condition: always()
inputs:
PathtoPublish: '$(build.artifactstagingdirectory)'
- ArtifactName: OSXArtifacts
\ No newline at end of file
+ ArtifactName: OSXArtifacts
diff --git a/build/steps/build-windows.yml b/build/steps/build-windows.yml
index d9abcf13b69..28c7e8f20d3 100644
--- a/build/steps/build-windows.yml
+++ b/build/steps/build-windows.yml
@@ -64,6 +64,8 @@ jobs:
displayName: 'NuGet restore ${{ parameters.slnPath }}'
inputs:
restoreSolution: ${{ parameters.slnPath }}
+ feedsToUse: config
+ nugetConfigPath: 'DevopsNuget.config'
- script: build.cmd -Target BuildForNuget -ScriptArgs '-configuration="$(BuildConfiguration)"','-Build_ArtifactStagingDirectory="$(Build.ArtifactStagingDirectory)"'
name: winbuild