Merge branch 'main-handler' into main-maui

This commit is contained in:
Rui Marinho 2021-03-03 19:09:41 +00:00
Родитель c83b2602a9 34a097fbcc
Коммит 6c16f5703c
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: D80D8291DF7C2068
8561 изменённых файлов: 199899 добавлений и 189334 удалений

Просмотреть файл

@ -9,10 +9,16 @@
]
},
"microsoft.dotnet.xharness.cli": {
"version": "1.0.0-prerelease.21109.1",
"version": "1.0.0-prerelease.21124.1",
"commands": [
"xharness"
]
},
"powershell": {
"version": "7.1.2",
"commands": [
"pwsh"
]
}
}
}

446
.gitignore поставляемый
Просмотреть файл

@ -1,87 +1,365 @@
bin
obj
classic_bin
classic_obj
*.dll
*.mdb
*.exe
*.log
*.userprefs
*.suo
_docs.xml
UpgradeLog*
docs/*.xml
.nuspec/*.nupkg
*UpgradeReport*
*.user
*.DS_Store
*.ide
.vs
*.designer.cs
*project.lock.json
!*ControlResources*.designer.cs
!*Resources.Designer.cs
!Xamarin.Forms.VSTemplate/**/*.designer.cs
!NuGet.exe
*test-results*
*/PerfLogs/*
*.sap
/packages
!.xamarin-component/**
*.xam
Components/
!GooglePlayServices/**
.irb-history
screenshot_*
!Xamarin.Forms.Addin/libs/**
!Xamarin.Forms.Addin/Packages/Xamarin.Forms.*.nupkg
*.remove
*/.metadata/*
**/AndroidNative/FormsViewGroup/gen/com/xamarin/formsviewgroup/R.java
**/AndroidNative/FormsViewGroup/gen/com/xamarin/formsviewgroup/BuildConfig.java
*.psess
TestResults/
**/Xamarin.Forms.UITest.Validator/UITestCoverage/index.html
!**/Xamarin.Forms.UITest.TestCloud/test-cloud.exe
**/Xamarin.Forms.ControlGallery.Windows/AppPackages/
**/Xamarin.Forms.ControlGallery.WindowsPhone/AppPackages/
**/Xamarin.Forms.ControlGallery.WindowsUniversal/AppPackages/
**/Xamarin.Forms.ControlGallery.WindowsUniversal/BundleArtifacts/
**/Xamarin.Forms.Controls/secrets.txt
**/Xamarin.Forms.Controls/controlgallery.config
**/Xamarin.Forms.ControlGallery.Android/Properties/MapsKey.cs
*.tss
*.bak
**/AndroidNative/local.properties
**/AndroidNative/FormsViewGroup/build/
**/AndroidNative/build/
**/AndroidNative/.gradle/
!**/AndroidNative/gradlew
!**/AndroidNative/gradlew.bat
!**/EmbeddingTestBeds/Embedding.iOS/*.designer.cs
!**/DualScreen.Mac/*.designer.cs
*.nupkg
*.pdb
# temporary vim files
*.swp
/eng/tools/*
!/eng/tools/mdoc/
!/eng/tools/mdoc/**/*
caketools/
*.binlog
.ionide/**
/.nuspec
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
.nuspec/**/*.dll
.XamarinFormsVersionFile.txt
.idea
Visual Studio 2019/**
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Mono auto generated files
mono_crash.*
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Ww][Ii][Nn]32/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
[Ll]ogs/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUnit
*.VisualState.xml
TestResult.xml
**/build/packages
WriteDevopsVariables.csproj
!**/Xamarin.Forms.Platform.GTK/Libs/**/*
!**/Xamarin.Forms.Build.Tasks/ErrorMessages.Designer.cs
!**/Xamarin.Forms.Maps.WPF/Properties/Settings.Designer.cs
!**/DevopsNuget.config
!**/Xamarin.Forms.Maps.GTK/Libs/**/*
/tools
nunit-*.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# ASP.NET Scaffolding
ScaffoldingReadMe.txt
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
launchSettings.json
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Coverlet is a free, cross platform Code Coverage Tool
coverage*.json
coverage*.xml
coverage*.info
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
tools/**
!tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# BeatPulse healthcheck temp database
healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder
.ionide/
# Fody - auto-generated XML schema
FodyWeavers.xsd

Просмотреть файл

@ -0,0 +1,65 @@
<?xml version="1.0"?>
<package >
<metadata>
<id>Xamarin.Forms.Visual.Material</id>
<version>$version$</version>
<authors>Microsoft</authors>
<owners>microsoft xamarin</owners>
<tags>xamarin forms visual material xamarinforms xamarinformsvisualmaterial xamarin.forms.visual.material</tags>
<license type="expression">MIT</license>
<icon>Assets\xamarin_128x128.png</icon>
<projectUrl>http://xamarin.com/forms</projectUrl>
<repository type="git" url="https://github.com/xamarin/xamarin.forms"/>
<requireLicenseAcceptance>true</requireLicenseAcceptance>
<description>Material renderers for Xamarin.Forms</description>
<copyright>© Microsoft Corporation. All rights reserved.</copyright>
<dependencies>
<group>
<dependency id="Xamarin.Forms" version="$version$"/>
</group>
<group targetFramework="MonoAndroid10">
<dependency id="Xamarin.Forms" version="$version$"/>
</group>
<group targetFramework="MonoAndroid10.0">
<dependency id="Xamarin.AndroidX.Lifecycle.LiveData" version="2.2.0.4" />
<dependency id="Xamarin.Google.Android.Material" version="1.2.1.1" />
</group>
<group targetFramework="Xamarin.iOS10">
<dependency id="Xamarin.iOS.MaterialComponents" version="92.0.0"/>
</group>
<group targetFramework="tizen40">
<dependency id="Tizen.NET" version="4.0.0"/>
<dependency id="Tizen.NET.MaterialComponents" version="0.9.7-preview"/>
</group>
</dependencies>
</metadata>
<files>
<!--Icon-->
<file src="..\Assets\xamarin_128x128.png" target="Assets\" />
<!--netstandard-->
<file src="_._" target="lib\netstandard1.0\_._" />
<!--Android 10-->
<file src="_._" target="lib\MonoAndroid10\_._" />
<file src="Microsoft.Maui.Controls.Compatibility.Visual.Material.targets" target="build\MonoAndroid10\Microsoft.Maui.Controls.Compatibility.Visual.Material.targets" />
<!--Android 10 buildTransitive-->
<file src="Microsoft.Maui.Controls.Compatibility.Visual.Material.targets" target="buildTransitive\MonoAndroid10\Microsoft.Maui.Controls.Compatibility.Visual.Material.targets" />
<!--Android 10.0-->
<file src="..\Xamarin.Forms.Material.Android\bin\$Configuration$\monoandroid10.0\Xamarin.Forms.Material.dll" target="lib\MonoAndroid10.0" />
<file src="..\Xamarin.Forms.Material.Android\bin\$Configuration$\monoandroid10.0\Xamarin.Forms.Material.*pdb" target="lib\MonoAndroid10.0" />
<file src="..\Xamarin.Forms.Material.Android\bin\$Configuration$\monoandroid10.0\Xamarin.Forms.Material.*mdb" target="lib\MonoAndroid10.0" />
<!--iOS-->
<file src="..\Xamarin.Forms.Material.iOS\bin\$Configuration$\Xamarin.Forms.Material.dll" target="lib\Xamarin.iOS10" />
<file src="..\Xamarin.Forms.Material.iOS\bin\$Configuration$\Xamarin.Forms.Material.*pdb" target="lib\Xamarin.iOS10" />
<file src="..\Xamarin.Forms.Material.iOS\bin\$Configuration$\Xamarin.Forms.Material.*mdb" target="lib\Xamarin.iOS10" />
<!--Tizen-->
<file src="..\Xamarin.Forms.Material.Tizen\bin\$Configuration$\tizen40\Xamarin.Forms.Material.dll" target="lib\tizen40" />
<file src="..\Xamarin.Forms.Material.Tizen\bin\$Configuration$\tizen40\Xamarin.Forms.Material.*pdb" target="lib\tizen40" />
</files>
</package>

Просмотреть файл

@ -0,0 +1,24 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<MauiKeepXamlResources>True</MauiKeepXamlResources>
</PropertyGroup>
<Import Project="$(MSBuildThisFileDirectory)Microsoft.Maui.Controls.targets" />
<UsingTask TaskName="Microsoft.Maui.Controls.Build.Tasks.DebugXamlCTask" AssemblyFile="$(_MauiBuildTasksLocation)Microsoft.Maui.Controls.Build.Tasks.dll" />
<PropertyGroup>
<CompileDependsOn>
$(CompileDependsOn);
GenerateDebugCode;
</CompileDependsOn>
</PropertyGroup>
<!-- duplicate legacy InitializeComponent, create a ctor with bool param -->
<Target Name="GenerateDebugCode" AfterTargets="AfterCompile">
<DebugXamlCTask
Assembly = "$(IntermediateOutputPath)$(TargetFileName)"
ReferencePath = "@(ReferencePath)"
DebugSymbols = "$(DebugSymbols)"
DebugType = "$(DebugType)"/>
</Target>
</Project>

Просмотреть файл

@ -0,0 +1,12 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Condition="'$(EnableDefaultItems)'=='True' And '$(EnableDefaultXamlItems)'=='True' And '$(EnableDefaultEmbeddedResourceItems)'=='True'">
<EmbeddedResource Include="**\*.xaml" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" SubType="Designer" Generator="MSBuild:UpdateDesignTimeXaml" />
</ItemGroup>
<ItemGroup Condition="'$(EnableDefaultItems)'=='True' And '$(EnableDefaultCssItems)'=='True' And '$(EnableDefaultEmbeddedResourceItems)'=='True'">
<EmbeddedResource Include="**\*.css" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" />
</ItemGroup>
<Import Project="Microsoft.Maui.Controls.SingleProject.props" />
</Project>

Просмотреть файл

@ -0,0 +1,19 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
NOTE: we cannot update/remove existing default items in our props file, as it is
imported *before* the default items are created by Microsoft.NET.Sdk.DefaultItems.props.
Doing it here works, but means that it will override things users do in their csproj.
Unfortunately there is no way to work around this without adding a new extension point to
the sdk props.
-->
<ItemGroup Condition="'$(EnableDefaultItems)'=='True' And '$(EnableDefaultXamlItems)'=='True' And '$(EnableDefaultEmbeddedResourceItems)'=='True'">
<Compile Update="**\*.xaml$(DefaultLanguageSourceExtension)" DependentUpon="%(Filename)" SubType="Code" />
<None Remove="**\*.xaml" Condition="'$(EnableDefaultNoneItems)'=='True'" />
</ItemGroup>
<ItemGroup Condition="'$(EnableDefaultItems)'=='True' And '$(EnableDefaultCssItems)'=='True' And '$(EnableDefaultEmbeddedResourceItems)'=='True'">
<None Remove="**\*.css" Condition="'$(EnableDefaultNoneItems)'=='True'" />
</ItemGroup>
<Import Project="Microsoft.Maui.Controls.SingleProject.targets" />
</Project>

Просмотреть файл

@ -0,0 +1,86 @@
<Project>
<ItemGroup Condition="$(TargetFramework.StartsWith('Xamarin.iOS')) != true AND $(TargetFramework.StartsWith('net6.0-ios')) != true ">
<Compile Remove="**\*.iOS.cs" />
<None Include="**\*.iOS.cs" />
<Compile Remove="**\iOS\*.cs" />
<None Include="**\iOS\*.cs" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('Xamarin.Mac')) != true ">
<Compile Remove="**\*.Mac.cs" />
<None Include="**\*.Mac.cs" />
<Compile Remove="**\Mac\*.cs" />
<None Include="**\Mac\*.cs" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('Xamarin.Mac')) != true AND $(TargetFramework.StartsWith('Xamarin.iOS')) != true AND $(TargetFramework.StartsWith('net6.0-ios')) != true ">
<Compile Remove="**\*.MaciOS.cs" />
<None Include="**\*.MaciOS.cs" />
<Compile Remove="**\MaciOS\*.cs" />
<None Include="**\MaciOS\*.cs" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('MonoAndroid')) != true AND $(TargetFramework.StartsWith('net6.0-android')) != true ">
<Compile Remove="**\*.Android.cs" />
<None Include="**\*.Android.cs" />
<Compile Remove="**\Android\*.cs" />
<None Include="**\Android\*.cs" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('netstandard')) != true ">
<Compile Remove="**\*.Standard.cs" />
<None Include="**\*.Standard.cs" />
<Compile Remove="**\Standard\*.cs" />
<None Include="**\Standard\*.cs" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('netcoreapp')) != true ">
<Compile Remove="**\*.Win32.cs" />
<None Include="**\*.Win32.cs" />
<Compile Remove="**\*.xaml.cs" />
<None Include="**\*.xaml.cs" />
<Compile Remove="**\*.xaml" />
<None Include="**\*.xaml" />
<Compile Remove="**\Win32\*.cs" />
<None Include="**\Win32\*.cs" />
</ItemGroup>
<PropertyGroup>
<!-- Android -->
<AndroidProjectFolder>Platform\Android\</AndroidProjectFolder>
<MonoAndroidResourcePrefix>$(AndroidProjectFolder)Resources</MonoAndroidResourcePrefix>
<MonoAndroidAssetsPrefix>$(AndroidProjectFolder)Assets</MonoAndroidAssetsPrefix>
</PropertyGroup>
<!-- Android -->
<PropertyGroup Condition="$(TargetFramework.StartsWith('net6.0-android'))">
<DefineConstants>$(DefineConstants);MONOANDROID</DefineConstants>
</PropertyGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('MonoAndroid')) == true OR $(TargetFramework.StartsWith('net6.0-android')) == true ">
<AndroidResource Include="$(MonoAndroidResourcePrefix)\*\*.xml" />
<AndroidResource Include="$(MonoAndroidResourcePrefix)\*\*.axml" />
</ItemGroup>
<!-- iOS -->
<PropertyGroup Condition=" '$(TargetFramework)' == 'net6.0-ios' ">
<DefineConstants>$(DefineConstants);IOS</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="$(TargetFramework.StartsWith('netcoreapp')) == true ">
<UseWpf>true</UseWpf>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|netstandard2.0|AnyCPU'">
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
</PropertyGroup>
<!-- If this becomes part of the product we will remove these but for now it's useful having them all in one place -->
<ItemGroup Condition="$(TargetFramework.StartsWith('MonoAndroid')) == true OR '$(TargetPlatformIdentifier)' == 'android' OR '$(TargetFramework)' == 'net6.0-android'">
<PackageReference Include="Xamarin.AndroidX.Lifecycle.LiveData" />
<PackageReference Include="Xamarin.Google.Android.Material" />
<PackageReference Include="Xamarin.AndroidX.Legacy.Support.V4" />
</ItemGroup>
<PropertyGroup Condition="$(TargetFramework.StartsWith('net5.0-windows')) == true">
<TargetPlatformMinVersion>10.0.17134.0</TargetPlatformMinVersion>
<RuntimeIdentifiers>win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>
<DefineConstants>$(DefineConstants);DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP;UWP_16299;UWP_18362;UWP_17134</DefineConstants>
<NoWarn>$(NoWarn);NU5104</NoWarn>
</PropertyGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('net5.0-windows')) == true">
<PackageReference Include="Microsoft.WinUI" Version="3.0.0-preview3.201113.0" />
</ItemGroup>
</Project>

Просмотреть файл

@ -0,0 +1,42 @@
<!-- "Single Project" support - all <ItemGroup/>'s must check if $(EnableDefaultItems) and $(SingleProject) are true -->
<Project>
<!-- Android -->
<ItemGroup Condition=" '$(EnableDefaultItems)' == 'true' and '$(SingleProject)' == 'true' and '$(TargetPlatformIdentifier)' == 'android' and '$(MonoAndroidResourcePrefix)' != '' ">
<AndroidResource Include="$(MonoAndroidResourcePrefix)/*/*.xml" />
<AndroidResource Include="$(MonoAndroidResourcePrefix)/*/*.axml" />
<AndroidResource Include="$(MonoAndroidResourcePrefix)/*/*.png" />
<AndroidResource Include="$(MonoAndroidResourcePrefix)/*/*.jpg" />
<AndroidResource Include="$(MonoAndroidResourcePrefix)/*/*.gif" />
<AndroidResource Include="$(MonoAndroidResourcePrefix)/font/*.ttf" />
<AndroidResource Include="$(MonoAndroidResourcePrefix)/font/*.otf" />
<AndroidResource Include="$(MonoAndroidResourcePrefix)/font/*.ttc" />
<AndroidResource Include="$(MonoAndroidResourcePrefix)/raw/*" Exclude="$(MonoAndroidResourcePrefix)/raw/.*" />
<AndroidAsset Include="$(MonoAndroidAssetsPrefix)/**/*" Exclude="$(MonoAndroidAssetsPrefix)/**/.*/**" />
</ItemGroup>
<!-- iOS -->
<ItemGroup Condition=" '$(EnableDefaultItems)' == 'true' and '$(SingleProject)' == 'true' and '$(TargetPlatformIdentifier)' == 'ios' and '$(iOSProjectFolder)' != '' ">
<None Include="$(iOSProjectFolder)Info.plist" LogicalName="Info.plist" />
<ImageAsset
Include="$(iOSProjectFolder)**/*.xcassets/**/*.png;$(iOSProjectFolder)**/*.xcassets/*/*.jpg;$(iOSProjectFolder)**/*.xcassets/**/*.pdf;$(iOSProjectFolder)**/*.xcassets/**/*.json"
Exclude="$(_SingleProjectiOSExcludes)"
Link="%(RecursiveDir)%(FileName)%(Extension)"
Visible="false"
IsDefaultItem="true"
/>
<SceneKitAsset
Include="$(iOSProjectFolder)**/*.scnassets/*"
Exclude="$(_SingleProjectiOSExcludes)"
Link="%(RecursiveDir)%(FileName)%(Extension)"
IsDefaultItem="true"
/>
<InterfaceDefinition
Include="$(iOSProjectFolder)**/*.storyboard;$(iOSProjectFolder)**/*.xib"
Exclude="$(_SingleProjectiOSExcludes)"
Link="%(RecursiveDir)%(FileName)%(Extension)"
IsDefaultItem="true"
/>
</ItemGroup>
</Project>

Просмотреть файл

@ -0,0 +1,34 @@
<!-- "Single Project" support -->
<Project>
<PropertyGroup Condition=" '$(SingleProject)' == 'true' ">
<!-- Android -->
<EnableDefaultAndroidItems>false</EnableDefaultAndroidItems>
<AndroidProjectFolder Condition=" '$(AndroidProjectFolder)' == '' ">Android/</AndroidProjectFolder>
<AndroidManifest>$(AndroidProjectFolder)AndroidManifest.xml</AndroidManifest>
<MonoAndroidResourcePrefix>$(AndroidProjectFolder)Resources</MonoAndroidResourcePrefix>
<MonoAndroidAssetsPrefix>$(AndroidProjectFolder)Assets</MonoAndroidAssetsPrefix>
<!-- iOS -->
<EnableDefaultiOSItems>false</EnableDefaultiOSItems>
<iOSProjectFolder Condition=" '$(iOSProjectFolder)' == '' ">iOS/</iOSProjectFolder>
<IPhoneResourcePrefix>$(iOSProjectFolder)Resources</IPhoneResourcePrefix>
<_SingleProjectiOSExcludes>$(iOSProjectFolder)/**/.*/**</_SingleProjectiOSExcludes>
</PropertyGroup>
<!-- Removals -->
<ItemGroup Condition=" '$(EnableDefaultItems)' == 'true' and '$(SingleProject)' == 'true' ">
<Compile
Condition=" '$(TargetPlatformIdentifier)' != 'android' and '$(AndroidProjectFolder)' != '' "
Remove="$(AndroidProjectFolder)**/*$(DefaultLanguageSourceExtension)"
/>
<Compile
Condition=" '$(TargetPlatformIdentifier)' != 'ios' and '$(iOSProjectFolder)' != '' "
Remove="$(iOSProjectFolder)**/*$(DefaultLanguageSourceExtension)"
/>
</ItemGroup>
<!-- IDE capabilities -->
<ItemGroup Condition=" '$(SingleProject)' == 'true' ">
<ProjectCapability Include="MauiSingleProject" />
<ProjectCapability Include="LaunchProfiles" />
</ItemGroup>
</Project>

Просмотреть файл

@ -0,0 +1,279 @@
<?xml version="1.0"?>
<package >
<metadata>
<id>Microsoft.Maui.Controls</id>
<version>$version$</version>
<authors>Microsoft</authors>
<owners>microsoft xamarin</owners>
<tags>xamarin forms xamarinforms xamarin.forms</tags>
<license type="expression">MIT</license>
<icon>Assets\xamarin_128x128.png</icon>
<projectUrl>http://xamarin.com/forms</projectUrl>
<repository type="git" url="https://github.com/xamarin/xamarin.forms"/>
<requireLicenseAcceptance>true</requireLicenseAcceptance>
<description>Build native UIs for iOS, Android, UWP, macOS, Tizen and many more from a single, shared C# codebase</description>
<copyright>© Microsoft Corporation. All rights reserved.</copyright>
<dependencies>
<group targetFramework="MonoAndroid10.0">
<dependency id="Xamarin.AndroidX.Lifecycle.LiveData" version="2.2.0.4" />
<dependency id="Xamarin.Google.Android.Material" version="1.2.1.1" />
<dependency id="Xamarin.AndroidX.Legacy.Support.V4" version="1.0.0.6" />
<dependency id="Xamarin.AndroidX.Browser" version="1.3.0" />
</group>
<!--<group targetFramework="net6.0-windows10.0.18362.0">
<dependency id="Microsoft.WinUI" version="3.0.0-preview3.201113.0" />
</group>-->
<group targetFramework="netstandard2.0">
</group>
<group targetFramework="Xamarin.iOS10">
</group>
<!-- <group targetFramework="tizen40">
<dependency id="Tizen.NET" version="4.0.0"/>
<dependency id="SkiaSharp.Views" version="2.80.2"/>
</group> -->
</dependencies>
<!-- DO NOT DELETE THESE REFERENCES -->
<!-- IF YOU DELETE THESE REFERENCES THE PACKAGE WILL NOT WORK ON MAC -->
<!-- https://github.com/xamarin/Xamarin.Forms/pull/2575 -->
<!-- DO NOT DELETE THESE REFERENCES -->
<references>
<group>
<reference file="Xamarin.Forms.Core.dll" />
<reference file="Xamarin.Forms.Xaml.dll" />
<reference file="Xamarin.Platform.dll" />
</group>
<group targetFramework="Xamarin.iOS10">
<reference file="Xamarin.Forms.Core.dll" />
<reference file="Xamarin.Forms.Xaml.dll" />
<reference file="Xamarin.Forms.Platform.iOS.dll" />
<reference file="Xamarin.Platform.dll" />
</group>
<group targetFramework="MonoAndroid10.0">
<reference file="Xamarin.Forms.Core.dll" />
<reference file="Xamarin.Forms.Xaml.dll" />
<reference file="FormsViewGroup.dll" />
<reference file="Xamarin.Forms.Platform.Android.dll" />
<reference file="Xamarin.Platform.dll" />
</group>
<!--<group targetFramework="net6.0-windows10.0.18362.0">
<reference file="Xamarin.Forms.Core.dll" />
<reference file="Xamarin.Forms.Xaml.dll" />
<reference file="Xamarin.Forms.Platform.UAP.dll" />
<reference file="Xamarin.Platform.dll" />
</group>-->
<!-- <group targetFramework="tizen40">
<reference file="Xamarin.Forms.Core.dll" />
<reference file="Xamarin.Forms.Platform.Tizen.dll" />
<reference file="Xamarin.Forms.Platform.dll" />
<reference file="Xamarin.Forms.Xaml.dll" />
</group> -->
</references>
</metadata>
<files>
<!--Icon-->
<file src="..\Assets\xamarin_128x128.png" target="Assets\" />
<!--netstandard-->
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="lib\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.*pdb" target="lib\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.*mdb" target="lib\netstandard2.0" />
<file src="..\eng\docs\Xamarin.Forms.Core.xml" target="lib\netstandard2.0" />
<file src="..\eng\docs\Xamarin.Forms.Xaml.xml" target="lib\netstandard2.0" />
<file src="..\eng\docs\**\Xamarin.Forms.Core.xml" target="lib\netstandard2.0" />
<file src="..\eng\docs\**\Xamarin.Forms.Xaml.xml" target="lib\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="lib\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.*pdb" target="lib\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.*mdb" target="lib\netstandard2.0" />
<!--Handlers-->
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\netstandard2.0\Xamarin.Platform.dll" target="lib\netstandard2.0" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\netstandard2.0\Xamarin.Platform.*pdb" target="lib\netstandard2.0" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\netstandard2.0\Xamarin.Platform.*mdb" target="lib\netstandard2.0" />
<!--Xamlc stuff-->
<file src="Microsoft.Maui.targets" target="build" />
<file src="Microsoft.Maui.props" target="build" />
<file src="Microsoft.Maui.Controls.DefaultItems.targets" target="build" />
<file src="Microsoft.Maui.Controls.DefaultItems.props" target="build" />
<file src="Microsoft.Maui.Controls.SingleProject.targets" target="build" />
<file src="Microsoft.Maui.Controls.SingleProject.props" target="build" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Build.Tasks.dll" target="build\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="build\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="build\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Mono.Cecil.dll" target="build\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Mono.Cecil.Mdb.dll" target="build\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Mono.Cecil.Pdb.dll" target="build\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Mono.Cecil.Rocks.dll" target="build\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\System.CodeDom.dll" target="build\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Xamarin.Forms.Build.Tasks.dll" target="build\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Xamarin.Forms.Core.dll" target="build\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Xamarin.Forms.Xaml.dll" target="build\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Mono.Cecil.dll" target="build\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Mono.Cecil.Mdb.dll" target="build\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Mono.Cecil.Pdb.dll" target="build\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Mono.Cecil.Rocks.dll" target="build\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\System.ValueTuple.dll" target="build\net462" />
<!--Xamlc stuff buildTransitive-->
<file src="Microsoft.Maui.targets" target="buildTransitive" />
<file src="Microsoft.Maui.props" target="buildTransitive" />
<file src="Microsoft.Maui.Controls.DefaultItems.targets" target="buildTransitive" />
<file src="Microsoft.Maui.Controls.DefaultItems.props" target="buildTransitive" />
<file src="Microsoft.Maui.Controls.SingleProject.targets" target="buildTransitive" />
<file src="Microsoft.Maui.Controls.SingleProject.props" target="buildTransitive" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Build.Tasks.dll" target="buildTransitive\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="buildTransitive\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="buildTransitive\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Mono.Cecil.dll" target="buildTransitive\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Mono.Cecil.Mdb.dll" target="buildTransitive\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Mono.Cecil.Pdb.dll" target="buildTransitive\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Mono.Cecil.Rocks.dll" target="buildTransitive\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\System.CodeDom.dll" target="buildTransitive\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Xamarin.Forms.Build.Tasks.dll" target="buildTransitive\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Xamarin.Forms.Core.dll" target="buildTransitive\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Xamarin.Forms.Xaml.dll" target="buildTransitive\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Mono.Cecil.dll" target="buildTransitive\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Mono.Cecil.Mdb.dll" target="buildTransitive\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Mono.Cecil.Pdb.dll" target="buildTransitive\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Mono.Cecil.Rocks.dll" target="buildTransitive\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\System.ValueTuple.dll" target="buildTransitive\net462" />
<!-- Xaml Design-time Stuff -->
<file src="..\src\Forms\src\Xamarin.Forms.Core.Design\bin\$Configuration$\Xamarin.Forms.Core.Design.dll" target="lib\netstandard2.0\Design" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml.Design\bin\$Configuration$\Xamarin.Forms.Xaml.Design.dll" target="lib\netstandard2.0\Design" />
<!-- <file src="..\src\Forms\src\Xamarin.Forms.Core.Design\bin\$Configuration$\Xamarin.Forms.Core.Design.dll" target="lib\netstandard1.0\Design" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml.Design\bin\$Configuration$\Xamarin.Forms.Xaml.Design.dll" target="lib\netstandard1.0\Design" /> -->
<file src="..\src\Forms\src\Xamarin.Forms.Core.Design\bin\$Configuration$\Xamarin.Forms.Core.Design.dll" target="lib\MonoAndroid10.0\Design" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml.Design\bin\$Configuration$\Xamarin.Forms.Xaml.Design.dll" target="lib\MonoAndroid10.0\Design" />
<file src="..\src\Forms\src\Xamarin.Forms.Core.Design\bin\$Configuration$\Xamarin.Forms.Core.Design.dll" target="lib\Xamarin.iOS10\Design" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml.Design\bin\$Configuration$\Xamarin.Forms.Xaml.Design.dll" target="lib\Xamarin.iOS10\Design" />
<file src="..\src\Forms\src\Xamarin.Forms.Core.Design\bin\$Configuration$\Xamarin.Forms.Core.Design.dll" target="lib\net5.0-windows10.0.18362.0\Design" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml.Design\bin\$Configuration$\Xamarin.Forms.Xaml.Design.dll" target="lib\net5.0-windows10.0.18362.0\Design" />
<!-- <file src="..\src\Forms\src\Xamarin.Forms.Core.Design\bin\$Configuration$\Xamarin.Forms.Core.Design.dll" target="lib\tizen40\Design" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml.Design\bin\$Configuration$\Xamarin.Forms.Xaml.Design.dll" target="lib\tizen40\Design" /> -->
<!--Android 10-->
<file src="proguard.cfg" target="build\MonoAndroid10\proguard.cfg" />
<file src="proguard.cfg" target="buildTransitive\MonoAndroid10\proguard.cfg" />
<!--Android 10-->
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Android\bin\$Configuration$\MonoAndroid10.0\Xamarin.Forms.Platform.Android.dll" target="lib\MonoAndroid10.0" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Android\bin\$Configuration$\MonoAndroid10.0\Xamarin.Forms.Platform.Android.*pdb" target="lib\MonoAndroid10.0" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Android.FormsViewGroup\bin\$Configuration$\FormsViewGroup.dll" target="lib\MonoAndroid10.0" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Android.FormsViewGroup\bin\$Configuration$\FormsViewGroup.*pdb" target="lib\MonoAndroid10.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="lib\MonoAndroid10.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.*pdb" target="lib\MonoAndroid10.0" />
<file src="..\eng\docs\Xamarin.Forms.Core.xml" target="lib\MonoAndroid10.0" />
<file src="..\eng\docs\Xamarin.Forms.Xaml.xml" target="lib\MonoAndroid10.0" />
<file src="..\eng\docs\**\Xamarin.Forms.Core.xml" target="lib\MonoAndroid10.0" />
<file src="..\eng\docs\**\Xamarin.Forms.Xaml.xml" target="lib\MonoAndroid10.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="lib\MonoAndroid10.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.*pdb" target="lib\MonoAndroid10.0" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\monoandroid10.0\Xamarin.Platform.dll" target="lib\MonoAndroid10.0" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\monoandroid10.0\Xamarin.Platform.*pdb" target="lib\MonoAndroid10.0" />
<!--iPhone Unified-->
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\Xamarin.Forms.Platform.iOS.dll" target="lib\Xamarin.iOS10" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\Xamarin.Forms.Platform.iOS.*pdb" target="lib\Xamarin.iOS10" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\Xamarin.Forms.Platform.iOS.*mdb" target="lib\Xamarin.iOS10" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="lib\Xamarin.iOS10" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.*pdb" target="lib\Xamarin.iOS10" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.*mdb" target="lib\Xamarin.iOS10" />
<file src="..\eng\docs\Xamarin.Forms.Core.xml" target="lib\Xamarin.iOS10" />
<file src="..\eng\docs\Xamarin.Forms.Xaml.xml" target="lib\Xamarin.iOS10" />
<file src="..\eng\docs\**\Xamarin.Forms.Core.xml" target="lib\Xamarin.iOS10" />
<file src="..\eng\docs\**\Xamarin.Forms.Xaml.xml" target="lib\Xamarin.iOS10" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="lib\Xamarin.iOS10" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.*pdb" target="lib\Xamarin.iOS10" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.*mdb" target="lib\Xamarin.iOS10" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\Xamarin.iOS10\Xamarin.Platform.dll" target="lib\Xamarin.iOS10" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\Xamarin.iOS10\Xamarin.Platform.*pdb" target="lib\Xamarin.iOS10" />
<!--net5.0-windows10.0.18362.0-->
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.UAP\bin\$Configuration$\net5.0-windows10.0.18362.0\Xamarin.Forms.Platform.UAP.dll" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.UAP\bin\$Configuration$\net5.0-windows10.0.18362.0\Xamarin.Forms.Platform.UAP.*pdb" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.UAP\bin\$Configuration$\net5.0-windows10.0.18362.0\Xamarin.Forms.Platform.UAP.*pri" target="runtimes\net5.0-windows10.0.18362.0\native" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.*pdb" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\eng\docs\Xamarin.Forms.Core.xml" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.*pdb" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\eng\docs\Xamarin.Forms.Xaml.xml" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\netstandard2.0\Xamarin.Platform.dll" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\netstandard2.0\Xamarin.Platform.*pdb" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.UAP\bin\$Configuration$\net5.0-windows10.0.18362.0\Xamarin.Forms.Platform.UAP\**\*.xaml" target="lib\net5.0-windows10.0.18362.0\Xamarin.Forms.Platform.UAP" />
<!-- iOS Localized String Resource Assemblies -->
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\ar\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\ar" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\ca\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\ca" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\cs\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\cs" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\da\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\da" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\de\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\de" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\el\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\el" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\es\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\es" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\fi\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\fi" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\fr\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\fr" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\he\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\he" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\hi\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\hi" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\hr\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\hr" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\hu\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\hu" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\id\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\id" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\it\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\it" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\ja\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\ja" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\ko\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\ko" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\ms\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\ms" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\nb\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\nb" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\nl\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\nl" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\pl\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\pl" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\pt-BR\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\pt-BR" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\pt\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\pt" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\ro\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\ro" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\ru\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\ru" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\sk\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\sk" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\sv\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\sv" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\th\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\th" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\tr\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\tr" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\uk\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\uk" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\vi\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\vi" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\zh-Hans\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\zh-Hans" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\zh-Hant\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\zh-Hant" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\zh-HK\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\zh-HK" />
<!--Tizen-->
<!-- <file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Tizen\bin\$Configuration$\tizen40\Xamarin.Forms.Platform.Tizen.dll" target="lib\tizen40" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Tizen\bin\$Configuration$\tizen40\Xamarin.Forms.Platform.Tizen.*pdb" target="lib\tizen40" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Tizen\bin\$Configuration$\tizen40\Xamarin.Forms.Platform.Tizen.dll" target="lib\tizen40" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="lib\tizen40" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.*pdb" target="lib\tizen40" />
<file src="..\eng\docs\Xamarin.Forms.Core.xml" target="lib\tizen40" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="lib\tizen40" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.*pdb" target="lib\tizen40" />
<file src="..\eng\docs\Xamarin.Forms.Xaml.xml" target="lib\tizen40" /> -->
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Android\bin\$Configuration$\MonoAndroid10.0\Xamarin.Forms.Platform.Android.dll" target="ref\MonoAndroid10.0" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Android.FormsViewGroup\bin\$Configuration$\FormsViewGroup.dll" target="ref\MonoAndroid10.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="ref\MonoAndroid10.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="ref\MonoAndroid10.0" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\monoandroid10.0\Xamarin.Platform.dll" target="ref\MonoAndroid10.0" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\Xamarin.Forms.Platform.iOS.dll" target="ref\Xamarin.iOS10" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="ref\Xamarin.iOS10" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="ref\Xamarin.iOS10" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\xamarin.ios10\Xamarin.Platform.dll" target="ref\Xamarin.iOS10" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.UAP\bin\$Configuration$\net5.0-windows10.0.18362.0\Xamarin.Forms.Platform.UAP.dll" target="ref\net5.0-windows10.0.18362.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="ref\net5.0-windows10.0.18362.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="ref\net5.0-windows10.0.18362.0" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\netstandard2.0\Xamarin.Platform.dll" target="ref\net5.0-windows10.0.18362.0" />
</files>
</package>

Просмотреть файл

@ -0,0 +1,19 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
When using Sdk-style projects and default embedded resource items are enabled, automatically
add the XAML files and fix up item metadata to pair them with code files.
This is in the props file, not the targets file, so that projects can remove/update these items.
The default value for EnableDefaultXamlItems is set in the targets, which works because
the property evaluation pass comes before the item evaluation pass.
The actual item groups are in a separate conditionally-imported file as they use constructs that
are not compatible with older MSBuild versions.
-->
<Import Project="$(MSBuildThisFileDirectory)Microsoft.Maui.Controls.DefaultItems.props" Condition="'$(MSBuildSDKsPath)'!=''" />
<PropertyGroup>
<_IsHotRestartDefined>$([System.Text.RegularExpressions.Regex]::IsMatch('$(DefineConstants.Trim())', '(^|;)HOTRESTART($|;)'))</_IsHotRestartDefined>
<DefineConstants Condition="!$(_IsHotRestartDefined) And '$(IsHotRestartBuild)' == 'true'">HOTRESTART;$(DefineConstants)</DefineConstants>
</PropertyGroup>
</Project>

Просмотреть файл

@ -0,0 +1,207 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<UsingTask TaskName="Microsoft.Maui.Controls.Build.Tasks.XamlGTask" AssemblyFile="$(MSBuildThisFileDirectory)Microsoft.Maui.Controls.Build.Tasks.dll" />
<UsingTask TaskName="Microsoft.Maui.Controls.Build.Tasks.CssGTask" AssemblyFile="$(MSBuildThisFileDirectory)Microsoft.Maui.Controls.Build.Tasks.dll" />
<UsingTask TaskName="Microsoft.Maui.Controls.Build.Tasks.XamlCTask" AssemblyFile="$(MSBuildThisFileDirectory)Microsoft.Maui.Controls.Build.Tasks.dll" />
<PropertyGroup>
<SynthesizeLinkMetadata>true</SynthesizeLinkMetadata>
<EnableDefaultXamlItems Condition="'$(EnableDefaultXamlItems)'==''">True</EnableDefaultXamlItems>
<_DefaultXamlItemsEnabled>False</_DefaultXamlItemsEnabled>
<EnableDefaultCssItems Condition="'$(EnableDefaultCssItems)'==''">True</EnableDefaultCssItems>
<_DefaultCssItemsEnabled>False</_DefaultCssItemsEnabled>
<!-- The WINUI check for this only runs when there is an empty string so I just convert false to an empty string to fall in line with our other properties -->
<SkipMicrosoftUIXamlCheckTargetPlatformVersion Condition="'$(SkipMicrosoftUIXamlCheckTargetPlatformVersion)'==''">true</SkipMicrosoftUIXamlCheckTargetPlatformVersion>
<SkipMicrosoftUIXamlCheckTargetPlatformVersion Condition="'$(SkipMicrosoftUIXamlCheckTargetPlatformVersion)'=='false'"></SkipMicrosoftUIXamlCheckTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(MSBuildThisFileDirectory)Microsoft.Maui.Controls.DefaultItems.targets" Condition="'$(MSBuildSDKsPath)'!=''" />
<ItemGroup>
<ProjectCapability Include="XamarinForms" />
<ProjectCapability Include="Maui" />
</ItemGroup>
<!-- Check Tasks ABI and other validations -->
<PropertyGroup>
<_MauiTargetsImportedAgain Condition="'$(_MauiTargetsImported)'=='True'">True</_MauiTargetsImportedAgain>
<_MauiTargetsImported>True</_MauiTargetsImported>
<IsXBuild Condition="'$(MSBuildRuntimeType)' == ''">true</IsXBuild>
<IsXBuild Condition="'$(MSBuildRuntimeType)' != ''">false</IsXBuild>
</PropertyGroup>
<Target Name="_ValidateMauiTasks" BeforeTargets="_CheckForInvalidConfigurationAndPlatform" Condition="'$(MauiDisableTargetsValidation)' != 'True'">
<Error Code="XF001"
Text="Microsoft.Maui targets have been imported multiple times. Please check your project file and remove the duplicate import(s)."
Condition="'$(_MauiTargetsImportedAgain)' == 'True'" />
</Target>
<Target Name="_ValidateMSBuild" BeforeTargets="_CheckForInvalidConfigurationAndPlatform">
<Error Code="XF003"
Text="Microsoft.Maui requires msbuild. xbuild is no longer supported."
Condition="'$(IsXBuild)' == 'true'" />
</Target>
<Target Name="_ValidateNETFrameworkVersion"
BeforeTargets="_CheckForInvalidConfigurationAndPlatform"
Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework' AND '$(TargetFrameworkVersion.Substring(1))' &lt; '4.6.1' AND '$(MauiDisableFrameworkVersionValidation)' != 'True'">
<Error Code="XF004"
Text="Microsoft.Maui requires .NETFramework >= v4.6.1. You have '$(TargetFrameworkVersion)'" />
</Target>
<!-- XamlG -->
<Target
Name="UpdateDesignTimeXaml"
DependsOnTargets="XamlG"/>
<PropertyGroup>
<CoreCompileDependsOn>
XamlG;
$(CoreCompileDependsOn);
</CoreCompileDependsOn>
</PropertyGroup>
<Target
Name="_FindXamlGFiles"
DependsOnTargets="PrepareResourceNames">
<ItemGroup>
<_XamlGInputs
Include="@(EmbeddedResource)"
Condition="'%(Extension)' == '.xaml' AND '$(DefaultLanguageSourceExtension)' == '.cs' AND '%(TargetPath)' != ''" />
<_XamlGOutputs
Include="@(_XamlGInputs->'$(IntermediateOutputPath)%(TargetPath).g.cs')" />
</ItemGroup>
</Target>
<Target
Name="XamlG"
BeforeTargets="BeforeCompile"
DependsOnTargets="_FindXamlGFiles; PrepareResourceNames; AfterResolveReferences"
Inputs="@(_XamlGInputs)"
Outputs="@(_XamlGOutputs)">
<PropertyGroup>
<ReferencedAssemblies>@(ReferencePath)</ReferencedAssemblies>
</PropertyGroup>
<XamlGTask
XamlFiles="@(_XamlGInputs)"
OutputFiles="@(_XamlGOutputs)"
Language="$(Language)"
References = "$(ReferencedAssemblies)"
AssemblyName="$(AssemblyName)" />
<ItemGroup>
<FileWrites Include="@(_XamlGOutputs)" />
<Compile Include="@(_XamlGOutputs)" />
</ItemGroup>
</Target>
<!-- XamlC -->
<PropertyGroup>
<CompileDependsOn>
$(CompileDependsOn);
XamlC;
</CompileDependsOn>
</PropertyGroup>
<Target Name="XamlC"
AfterTargets="AfterCompile"
DependsOnTargets="_FindXamlGFiles"
Inputs="$(IntermediateOutputPath)$(TargetFileName)"
Outputs="$(IntermediateOutputPath)XamlC.stamp"
Condition=" '$(DesignTimeBuild)' != 'True' AND '@(_XamlGInputs->Count())' != '0' ">
<PropertyGroup>
<_MauiXamlCValidateOnly>$(MauiXamlCValidateOnly)</_MauiXamlCValidateOnly>
<_MauiXamlCValidateOnly Condition="'$(BuildingForLiveUnitTesting)' == 'True' ">True</_MauiXamlCValidateOnly>
</PropertyGroup>
<XamlCTask
Assembly = "$(IntermediateOutputPath)$(TargetFileName)"
ReferencePath = "@(ReferencePath)"
OptimizeIL = "true"
DebugSymbols = "$(DebugSymbols)"
DebugType = "$(DebugType)"
ValidateOnly = "$(_MauiXamlCValidateOnly)"
KeepXamlResources = "$(MauiKeepXamlResources)" />
<Touch Files="$(IntermediateOutputPath)XamlC.stamp" AlwaysCreate="True" />
<ItemGroup>
<FileWrites Include="$(IntermediateOutputPath)XamlC.stamp" />
</ItemGroup>
</Target>
<!-- CssG -->
<PropertyGroup>
<CoreCompileDependsOn>
CssG;
$(CoreCompileDependsOn);
</CoreCompileDependsOn>
</PropertyGroup>
<Target Name="_FindCSSFiles" DependsOnTargets="PrepareResourceNames">
<ItemGroup>
<_CSSInputs Include="@(EmbeddedResource)" Condition="'%(Extension)' == '.css' AND '$(DefaultLanguageSourceExtension)' == '.cs' AND '%(TargetPath)' != ''" />
<_CSSOutputs Include="@(_CSSInputs->'$(IntermediateOutputPath)%(TargetPath).g.cs')" />
</ItemGroup>
</Target>
<Target Name="CssG" BeforeTargets="BeforeCompile" DependsOnTargets="_FindCSSFiles" Inputs="@(_CSSInputs)" Outputs="@(_CSSOutputs)">
<CssGTask
CSSFiles="@(_CSSInputs)"
OutputFiles="@(_CSSOutputs)"
Language = "$(Language)"
AssemblyName = "$(AssemblyName)" />
<ItemGroup>
<FileWrites Include="@(_CSSOutputs)" />
<Compile Include="@(_CSSOutputs)" />
</ItemGroup>
</Target>
<!--
Platform Specific Targets.
We can't use a framework specific targets file because it breaks shared projects i.e. /build/MonoAndroid10/Microsoft.Maui.Controls.targets
-->
<!-- MonoAndroid targets. -->
<PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == 'MonoAndroid'">
<CoreCompileDependsOn>
IncludeProguardForAndroid;
$(CoreCompileDependsOn);
</CoreCompileDependsOn>
<PrepareForBuildDependsOn>
ValidateTargetFrameworkVersionForMaui;
$(PrepareForBuildDependsOn);
</PrepareForBuildDependsOn>
</PropertyGroup>
<Target Name="IncludeProguardForAndroid" Condition="'$(MauiDisableDefaultProguardConfiguration)' != 'True'">
<ItemGroup>
<ProguardConfiguration Include="$(MSBuildThisFileDirectory)MonoAndroid10\proguard.cfg" />
</ItemGroup>
</Target>
<Target Name="ValidateTargetFrameworkVersionForMaui" Condition="'$(MauiDisableTargetFrameworkValidation)' != 'True'">
<PropertyGroup>
<MinTargetFrameworkVersionForMaui>10.0</MinTargetFrameworkVersionForMaui>
<TargetFrameworkVersionWithoutV>$(TargetFrameworkVersion.TrimStart('vV'))</TargetFrameworkVersionWithoutV>
</PropertyGroup>
<Error Code="XF005" Condition="$(TargetFrameworkVersionWithoutV) &lt; $(MinTargetFrameworkVersionForMaui)"
Text="The %24(TargetFrameworkVersion) for $(ProjectName) ($(TargetFrameworkVersion)) is less than the minimum required %24(TargetFrameworkVersion) for Microsoft.Maui ($(MinTargetFrameworkVersionForMaui)). You need to increase the %24(TargetFrameworkVersion) for $(ProjectName)." />
</Target>
<!-- UWP Targets-->
<Target Name="WinUICheckTargetPlatformVersion" BeforeTargets="PrepareForBuild"
Condition="'$(TargetPlatformIdentifier)' == 'UAP' AND '$(TargetPlatformVersion)' != '' AND '$(TargetPlatformMinVersion)' != ''">
<PropertyGroup>
<MicrosoftUIXamlTargetPlatformMinCheckValue>$([System.Version]::Parse('$(TargetPlatformMinVersion)').Build)</MicrosoftUIXamlTargetPlatformMinCheckValue>
</PropertyGroup>
<Warning
Text="Microsoft.Maui recommends TargetPlatformMinVersion &gt;= 10.0.15063.0 (current project is $(MicrosoftUIXamlTargetPlatformMinCheckValue))"
Condition="$(MicrosoftUIXamlTargetPlatformMinCheckValue) &lt; 15063" />
<PropertyGroup>
<MicrosoftUIXamlTargetPlatformCheckValue>$([System.Version]::Parse('$(TargetPlatformVersion)').Build)</MicrosoftUIXamlTargetPlatformCheckValue>
</PropertyGroup>
<Warning
Text="Microsoft.Maui recommends TargetPlatformVersion &gt;= 10.0.18362.0 (current project is $(MicrosoftUIXamlTargetPlatformCheckValue))"
Condition="$(MicrosoftUIXamlTargetPlatformCheckValue) &lt; 18362 AND '$(OutputType)'!='Library'" />
<Warning
Text="Microsoft.Maui recommends TargetPlatformVersion &gt;= 10.0.14393.0 (current project is $(MicrosoftUIXamlTargetPlatformCheckValue))"
Condition="$(MicrosoftUIXamlTargetPlatformCheckValue) &lt; 14393 AND '$(OutputType)'=='Library'" />
</Target>
</Project>

Просмотреть файл

@ -0,0 +1,419 @@
<?xml version="1.0" encoding="UTF-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<AvailableItemName Include="SharedImage" />
<AvailableItemName Include="SharedFont" />
</ItemGroup>
<PropertyGroup>
<_ResizetizerTaskAssemblyName>$(MSBuildThisFileDirectory)\Microsoft.Maui.Resizetizer.dll</_ResizetizerTaskAssemblyName>
</PropertyGroup>
<UsingTask
AssemblyFile="$(_ResizetizerTaskAssemblyName)"
TaskName="Microsoft.Maui.Resizetizer.ResizetizeSharedImages" />
<UsingTask
AssemblyFile="$(_ResizetizerTaskAssemblyName)"
TaskName="Microsoft.Maui.Resizetizer.DetectInvalidResourceOutputFilenamesTask" />
<UsingTask
AssemblyFile="$(_ResizetizerTaskAssemblyName)"
TaskName="Microsoft.Maui.Resizetizer.CreatePartialInfoPlistTask" />
<PropertyGroup>
<CleanDependsOn>
$(CleanDependsOn);
_CleanResizetizer;
</CleanDependsOn>
<_ResizetizerInputsFile>$(IntermediateOutputPath)resizetizer.inputs</_ResizetizerInputsFile>
<_SharedFontInputsFile>$(IntermediateOutputPath)sharedfont.inputs</_SharedFontInputsFile>
<_SharedFontStampFile>$(IntermediateOutputPath)sharedfont.stamp</_SharedFontStampFile>
<ResizetizerIncludeSelfProject Condition="'$(ResizetizerIncludeSelfProject)' == ''">False</ResizetizerIncludeSelfProject>
<_ResizetizerDefaultInvalidFilenamesErrorMessage>
One or more invalid file names were detected. File names must be lowercase, start and end with a letter character, and contain only alphanumeric characters or underscores: &#13;&#10;
</_ResizetizerDefaultInvalidFilenamesErrorMessage>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetFrameworkIdentifier)' != '.NETCoreApp'">
<_ResizetizerIsNetCore>False</_ResizetizerIsNetCore>
<_ResizetizerIsAndroidApp Condition="'$(TargetFrameworkIdentifier)' == 'MonoAndroid' And '$(AndroidApplication)' == 'True'">True</_ResizetizerIsAndroidApp>
<_ResizetizerIsiOSApp Condition="'$(TargetFrameworkIdentifier)' == 'Xamarin.iOS' And ('$(OutputType)' == 'Exe' Or '$(IsAppExtension)' == 'True')">True</_ResizetizerIsiOSApp>
<_ResizetizerIsUWPApp Condition="'$(TargetPlatformIdentifier)' == 'UAP' And '$(OutputType)' == 'AppContainerExe'">True</_ResizetizerIsUWPApp>
<_ResizetizerIsWPFApp Condition="'$(IsApplication)' == 'True' And '$(NuGetRuntimeIdentifier)' == 'win' And '$(TargetPlatformIdentifier)' == 'Windows'">True</_ResizetizerIsWPFApp>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp'">
<_ResizetizerIsNetCore>True</_ResizetizerIsNetCore>
<_ResizetizerIsAndroidApp Condition="'$(TargetPlatformIdentifier)' == 'Android' And '$(OutputType)' == 'Exe'">True</_ResizetizerIsAndroidApp>
<_ResizetizerIsiOSApp Condition="'$(TargetPlatformIdentifier)' == 'iOS' And ('$(OutputType)' == 'Exe' Or '$(IsAppExtension)' == 'True')">True</_ResizetizerIsiOSApp>
<_ResizetizerIsUWPApp Condition="'$(TargetPlatformIdentifier)'=='UAP' And '$(OutputType)' == 'AppContainerExe'">True</_ResizetizerIsUWPApp>
<_ResizetizerIsWPFApp Condition="'$(IsApplication)' == 'True' And '$(NuGetRuntimeIdentifier)' == 'win' And '$(TargetPlatformIdentifier)'=='Windows'">True</_ResizetizerIsWPFApp>
</PropertyGroup>
<PropertyGroup Condition="'$(_ResizetizerIsAndroidApp)' == 'True' Or '$(_ResizetizerIsiOSApp)' == 'True' Or '$(_ResizetizerIsUWPApp)' == 'True' Or '$(_ResizetizerIsWPFApp)' == 'True'">
<_ResizetizerIsCompatibleApp>True</_ResizetizerIsCompatibleApp>
<ResizetizeDependsOnTargets>
$(ResizetizeDependsOnTargets);
ResizetizeCollectItems;
</ResizetizeDependsOnTargets>
<ProcessSharedFontsDependsOnTargets>
$(ProcessSharedFontsDependsOnTargets);
ResizetizeCollectItems;
</ProcessSharedFontsDependsOnTargets>
</PropertyGroup>
<!-- iOS -->
<PropertyGroup Condition="'$(_ResizetizerIsiOSApp)' == 'True'">
<ResizetizerPlatformType>ios</ResizetizerPlatformType>
<ResizetizeCollectItemsBeforeTargets>
$(ResizetizeCollectItemsBeforeTargets);
_CollectBundleResources;_BeforeCoreCompileImageAssets;
</ResizetizeCollectItemsBeforeTargets>
<ResizetizeAfterTargets>
$(ResizetizeAfterTargets);
ResizetizeCollectItems;
</ResizetizeAfterTargets>
<ProcessSharedFontsAfterTargets>
$(ProcessSharedFontsAfterTargets);
_CompileCoreMLModels;
</ProcessSharedFontsAfterTargets>
</PropertyGroup>
<!-- Android -->
<PropertyGroup Condition="'$(_ResizetizerIsAndroidApp)' == 'True'">
<ResizetizerPlatformType>android</ResizetizerPlatformType>
<ResizetizeCollectItemsAfterTargets>
$(ResizetizeCollectItemsAfterTargets);
ResolveProjectReferences;
</ResizetizeCollectItemsAfterTargets>
<ResizetizeAfterTargets>
$(ResizetizeAfterTargets);
ResizetizeCollectItems;
</ResizetizeAfterTargets>
<ProcessSharedFontsAfterTargets>
$(ProcessSharedFontsAfterTargets);
ResizetizeCollectItems;
</ProcessSharedFontsAfterTargets>
</PropertyGroup>
<!-- UWP -->
<PropertyGroup Condition="'$(_ResizetizerIsUWPApp)' == 'True'">
<ResizetizerPlatformType>uwp</ResizetizerPlatformType>
<ResizetizeBeforeTargets>
$(ResizetizeBeforeTargets);
AssignTargetPaths;
</ResizetizeBeforeTargets>
<ProcessSharedFontsBeforeTargets>
$(ProcessSharedFontsBeforeTargets);
AssignTargetPaths;
</ProcessSharedFontsBeforeTargets>
</PropertyGroup>
<!-- WPF -->
<PropertyGroup Condition="'$(_ResizetizerIsWPFApp)' == 'True'">
<ResizetizerPlatformType>wpf</ResizetizerPlatformType>
<ResizetizeBeforeTargets>
$(ResizetizeBeforeTargets);
FileClassification;
</ResizetizeBeforeTargets>
<ProcessSharedFontsBeforeTargets>
$(ProcessSharedFontsBeforeTargets);
FileClassification;
</ProcessSharedFontsBeforeTargets>
</PropertyGroup>
<!-- Finds absolute paths to any SharedImage in this project -->
<!-- App head projects will invoke this target on their project references to collect images -->
<Target Name="GetSharedItems" Outputs="@(ExportedSharedItem)">
<ItemGroup>
<SharedItem Include="@(SharedImage)" ItemGroupName="SharedImage" />
</ItemGroup>
<ItemGroup>
<SharedItem Include="@(SharedFont)" ItemGroupName="SharedFont" />
</ItemGroup>
<ConvertToAbsolutePath Paths="@(SharedItem)">
<Output TaskParameter="AbsolutePaths" ItemName="ExportedSharedItem" />
</ConvertToAbsolutePath>
</Target>
<!-- Collect images from referenced projects -->
<Target Name="ResizetizeCollectItems"
Condition="'$(_ResizetizerIsCompatibleApp)' == 'True'"
BeforeTargets="$(ResizetizeCollectItemsBeforeTargets)"
AfterTargets="$(ResizetizeCollectItemsAfterTargets)">
<CallTarget Targets="GetSharedItems" Condition="'$(ResizetizerIncludeSelfProject)' == 'True'">
<Output
TaskParameter="TargetOutputs"
ItemName="ImportedSharedItem" />
</CallTarget>
<!-- Invoke the GetSharedItems target on all project references -->
<!-- This will accumulate images into our SharedImage group -->
<!--<MSBuild Targets="GetSharedItems" Projects="@(_MSBuildProjectReferenceExistent)">-->
<MSBuild
Targets="GetSharedItems"
Projects="@(ProjectReference)"
SkipNonexistentProjects="true"
SkipNonexistentTargets="true">
<Output
TaskParameter="TargetOutputs"
ItemName="ImportedSharedItem" />
</MSBuild>
<ItemGroup>
<SharedImage
Include="@(ImportedSharedItem)"
Condition="'%(ImportedSharedItem.ItemGroupName)' == 'SharedImage'" />
</ItemGroup>
<ItemGroup>
<SharedFont
Include="@(ImportedSharedItem)"
Condition="'%(ImportedSharedItem.ItemGroupName)' == 'SharedFont'" />
</ItemGroup>
<!-- Write out item spec and metadata to a file we can use as an inputs for the resize target -->
<!-- This allows us to invalidate the build based on not just input image files changing but project item metadata as well -->
<WriteLinesToFile
File="$(_ResizetizerInputsFile)"
Lines="@(SharedImage->'File=%(Identity);Link=%(Link);BaseSize=%(BaseSize);Resize=%(Resize);TintColor=%(TintColor);IsAppIcon=%(IsAppIcon);ForegroundScale=%(ForegroundScale);ForegroundFile=%(ForegroundFile)')"
Overwrite="true"
WriteOnlyWhenDifferent="true" />
<WriteLinesToFile
File="$(_SharedFontInputsFile)"
Lines="@(SharedFont->'File=%(Identity);Link=%(Link);Alias=%(Alias)')"
Overwrite="true"
WriteOnlyWhenDifferent="true" />
</Target>
<Target Name="ProcessSharedFonts"
Inputs="@(SharedFont);$(_SharedFontInputsFile)"
Outputs="$(_SharedFontStampFile)"
AfterTargets="$(ProcessSharedFontsAfterTargets)"
BeforeTargets="$(ProcessSharedFontsBeforeTargets)"
DependsOnTargets="$(ProcessSharedFontsDependsOnTargets)">
<DetectInvalidResourceOutputFilenamesTask
Items="@(SharedFont)"
ErrorMessage="$(_ResizetizerDefaultInvalidFilenamesErrorMessage)">
</DetectInvalidResourceOutputFilenamesTask>
<!-- Copy font files over -->
<Copy
SourceFiles="@(SharedFont)"
DestinationFolder="$(IntermediateOutputPath)sp\fonts\"
SkipUnchangedFiles="true" />
<ItemGroup>
<_SharedFontCopied Include="$(IntermediateOutputPath)sp\fonts\*" />
</ItemGroup>
<ItemGroup Condition="'$(_ResizetizerIsiOSApp)' == 'True' And '@(_SharedFontCopied)' != ''">
<!-- iOS Expects fonts to be in this group -->
<_SharedFontBundleResource Include="@(_SharedFontCopied)">
<LogicalName>$([System.IO.Path]::GetFileName(%(_SharedFontCopied.Identity)))</LogicalName>
<TargetPath>$([System.IO.Path]::GetFileName(%(_SharedFontCopied.Identity)))</TargetPath>
</_SharedFontBundleResource>
<BundleResource Include="@(_SharedFontBundleResource)" />
</ItemGroup>
<!-- Create a partial info.plist for iOS -->
<CreatePartialInfoPlistTask
Condition="'$(_ResizetizerIsiOSApp)' == 'True' And '@(_SharedFontCopied)' != ''"
IntermediateOutputPath="$(IntermediateOutputPath)sp\"
PlistName="FontInfo.plist"
CustomFonts="@(_SharedFontCopied)">
<Output
TaskParameter="PListFiles"
ItemName="_SharedFontPListFiles" />
</CreatePartialInfoPlistTask>
<!-- iOS - Partial Info.plist for font registration -->
<ItemGroup Condition="'$(_ResizetizerIsiOSApp)' == 'True' ">
<_PartialAppManifest Include="@(_SharedFontPListFiles)" Condition="'@(_SharedFontPListFiles)' != ''" />
<FileWrites Include="@(_SharedFontPListFiles)" Condition="'@(_SharedFontPListFiles)' != ''" />
</ItemGroup>
<!-- Android -->
<ItemGroup Condition="'$(_ResizetizerIsAndroidApp)' == 'True'">
<AndroidAsset Include="@(_SharedFontCopied)" Condition="'@(_SharedFontCopied)' != ''">
<Link>$([System.IO.Path]::GetFileName(%(_SharedFontCopied.Identity)))</Link>
</AndroidAsset>
</ItemGroup>
<!-- UWP -->
<ItemGroup Condition="'$(_ResizetizerIsUWPApp)' == 'True'">
<ContentWithTargetPath Include="@(_SharedFontCopied)" Condition="'@(_SharedFontCopied)' != ''">
<TargetPath>Assets\$([System.IO.Path]::GetFileName(%(_SharedFontCopied.Identity)))</TargetPath>
</ContentWithTargetPath>
</ItemGroup>
<!-- WPF -->
<ItemGroup Condition="'$(_ResizetizerIsWPFApp)' == 'True'">
<Resource Include="@(_SharedFontCopied)" Condition="'@(_SharedFontCopied)' != ''">
<LogicalName>$([System.IO.Path]::GetFileName(%(_SharedFontCopied.Identity)))</LogicalName>
<Link>$([System.IO.Path]::GetFileName(%(_SharedFontCopied.Identity)))</Link>
</Resource>
</ItemGroup>
<!-- iOS Only -->
<!-- If on Windows, using build host, copy the files over to build server host too -->
<CopyFilesToBuildServer
Condition="'$(BuildSessionId)' != '' And '$(_ResizetizerIsiOSApp)' == 'True' And '$(IsMacEnabled)'=='true'"
SessionId="$(BuildSessionId)"
Files="@(_SharedFontBundleResource);@(_SharedFontPListFiles)" />
<!-- Touch/create our stamp file for outputs -->
<Touch Files="$(_SharedFontStampFile)" AlwaysCreate="True" />
<!-- Include our fonts and stamp file as filewrites so they don't get rm'd -->
<ItemGroup>
<FileWrites Include="$(_SharedFontStampFile)" />
<FileWrites Include="@(_SharedFontCopied)" />
</ItemGroup>
</Target>
<Target Name="ResizetizeImages"
Inputs="@(SharedImage);$(_ResizetizerInputsFile)"
Outputs="$(IntermediateOutputPath)resizetizer.stamp"
AfterTargets="$(ResizetizeAfterTargets)"
BeforeTargets="$(ResizetizeBeforeTargets)"
DependsOnTargets="$(ResizetizeDependsOnTargets)">
<DetectInvalidResourceOutputFilenamesTask
Items="@(SharedImage)"
ErrorMessage="$(_ResizetizerDefaultInvalidFilenamesErrorMessage)">
</DetectInvalidResourceOutputFilenamesTask>
<!-- Where in obj/ to store these -->
<PropertyGroup>
<ResizetizerIntermediateOutputPath>$(IntermediateOutputPath)resizetize\r\</ResizetizerIntermediateOutputPath>
</PropertyGroup>
<!-- Resize the images -->
<ResizetizeSharedImages
PlatformType="$(ResizetizerPlatformType)"
IntermediateOutputPath="$(ResizetizerIntermediateOutputPath)"
InputsFile="$(_ResizetizerInputsFile)"
SharedImages="@(SharedImage)">
</ResizetizeSharedImages>
<ItemGroup>
<!-- Get Images that were generated -->
<!-- Either from the task, or if the task was skipped (up to date), use the wildcard lookup -->
<_ResizetizerCollectedImages Condition="'@(CopiedResources)' != ''" Include="@(CopiedResources)" />
<_ResizetizerCollectedImages Condition="'@(CopiedResources)' == ''" Include="$(ResizetizerIntermediateOutputPath)**\*" />
</ItemGroup>
<!-- iOS -->
<ItemGroup Condition="'$(_ResizetizerIsiOSApp)' == 'True'">
<!-- Batch the collectd items into BundleResource which iOS expects -->
<_ResizetizerCollectedBundleResourceImages Include="@(_ResizetizerCollectedImages->'%(FullPath)')">
<LogicalName>%(_ResizetizerCollectedImages.Filename)%(_ResizetizerCollectedImages.Extension)</LogicalName>
<TargetPath>%(_ResizetizerCollectedImages.Filename)%(_ResizetizerCollectedImages.Extension)</TargetPath>
</_ResizetizerCollectedBundleResourceImages>
<!-- iOS Expects images in this group -->
<BundleResource Include="@(_ResizetizerCollectedBundleResourceImages)" Condition="'@(_ResizetizerCollectedBundleResourceImages->Contains('Assets.xcassets'))' != 'True' and '%(_ResizetizerCollectedBundleResourceImages.Identity)' != ''" />
<ImageAsset
Include="@(_ResizetizerCollectedBundleResourceImages)"
Condition="'@(_ResizetizerCollectedBundleResourceImages->Contains('Assets.xcassets'))' == 'True' and '%(_ResizetizerCollectedBundleResourceImages.Identity)' != ''">
<LogicalName>Assets.xcassets\$([System.IO.Path]::GetFileName($([System.IO.Path]::GetDirectoryName(%(_ResizetizerCollectedBundleResourceImages.Identity)))))\%(_ResizetizerCollectedBundleResourceImages.Filename)%(_ResizetizerCollectedBundleResourceImages.Extension)</LogicalName>
<TargetPath>Assets.xcassets\$([System.IO.Path]::GetFileName($([System.IO.Path]::GetDirectoryName(%(_ResizetizerCollectedBundleResourceImages.Identity)))))\%(_ResizetizerCollectedBundleResourceImages.Filename)%(_ResizetizerCollectedBundleResourceImages.Extension)</TargetPath>
<Link>Assets.xcassets\$([System.IO.Path]::GetFileName($([System.IO.Path]::GetDirectoryName(%(_ResizetizerCollectedBundleResourceImages.Identity)))))\%(_ResizetizerCollectedBundleResourceImages.Filename)%(_ResizetizerCollectedBundleResourceImages.Extension)</Link>
</ImageAsset>
<FileWrites Include="@(_ResizetizerCollectedBundleResourceImages)" />
</ItemGroup>
<!-- iOS Only -->
<!-- If on Windows, using build host, copy the files over to build server host too -->
<CopyFilesToBuildServer
Condition="'$(BuildSessionId)' != '' And '$(_ResizetizerIsiOSApp)' == 'True' And '$(IsMacEnabled)'=='true'"
SessionId="$(BuildSessionId)"
Files="@(_ResizetizerCollectedBundleResourceImages)" />
<!-- Android -->
<ItemGroup Condition="'$(_ResizetizerIsAndroidApp)' == 'True'">
<!-- If we had any images, add that obj/ folder as a resource directory -->
<LibraryResourceDirectories Condition="Exists ('$(ResizetizerIntermediateOutputPath)')" Include="$(ResizetizerIntermediateOutputPath)">
<StampFile>$(IntermediateOutputPath)resizetizer.stamp</StampFile>
</LibraryResourceDirectories>
<FileWrites Include="@(_ResizetizerCollectedImages)" />
</ItemGroup>
<!-- UWP -->
<ItemGroup Condition="'$(_ResizetizerIsUWPApp)' == 'True'">
<ContentWithTargetPath Include="@(_ResizetizerCollectedImages)">
<TargetPath>Assets\%(_ResizetizerCollectedImages.Filename)%(_ResizetizerCollectedImages.Extension)</TargetPath>
</ContentWithTargetPath>
<FileWrites Include="@(_ResizetizerCollectedImages)" />
</ItemGroup>
<!-- WPF -->
<ItemGroup Condition="'$(_ResizetizerIsWPFApp)' == 'True'">
<Resource Include="@(_ResizetizerCollectedImages)">
<LogicalName>%(_ResizetizerCollectedImages.Filename)%(_ResizetizerCollectedImages.Extension)</LogicalName>
<Link>%(_ResizetizerCollectedImages.Filename)%(_ResizetizerCollectedImages.Extension)</Link>
</Resource>
<FileWrites Include="@(_ResizetizerCollectedImages)" />
</ItemGroup>
<!-- Touch/create our stamp file for outputs -->
<Touch Files="$(IntermediateOutputPath)resizetizer.stamp" AlwaysCreate="True" />
<!-- Include our images and stamp file as filewrites so they don't get rm'd -->
<ItemGroup>
<FileWrites Include="$(IntermediateOutputPath)resizetizer.stamp" />
</ItemGroup>
</Target>
<Target Name="_CleanResizetizer">
<PropertyGroup>
<ResizetizerIntermediateOutputPath>$(IntermediateOutputPath)resizetize\r\</ResizetizerIntermediateOutputPath>
</PropertyGroup>
<RemoveDir Directories="$(ResizetizerIntermediateOutputPath)" Condition="Exists ('$(ResizetizerIntermediateOutputPath)' )" />
<RemoveDir Directories="$(IntermediateOutputPath)sp" Condition="Exists ( '$(IntermediateOutputPath)sp' )" />
</Target>
</Project>

Просмотреть файл

@ -1,24 +0,0 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<XFKeepXamlResources>True</XFKeepXamlResources>
</PropertyGroup>
<Import Project="$(MSBuildThisFileDirectory)Xamarin.Forms.targets" />
<UsingTask TaskName="Xamarin.Forms.Build.Tasks.DebugXamlCTask" AssemblyFile="$(_XFBuildTasksLocation)Xamarin.Forms.Build.Tasks.dll" />
<PropertyGroup>
<CompileDependsOn>
$(CompileDependsOn);
GenerateDebugCode;
</CompileDependsOn>
</PropertyGroup>
<!-- duplicate legacy InitializeComponent, create a ctor with bool param -->
<Target Name="GenerateDebugCode" AfterTargets="AfterCompile">
<DebugXamlCTask
Assembly = "$(IntermediateOutputPath)$(TargetFileName)"
ReferencePath = "@(ReferencePath)"
DebugSymbols = "$(DebugSymbols)"
DebugType = "$(DebugType)"/>
</Target>
</Project>

Просмотреть файл

@ -1,10 +0,0 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Condition="'$(EnableDefaultItems)'=='True' And '$(EnableDefaultXamlItems)'=='True' And '$(EnableDefaultEmbeddedResourceItems)'=='True'">
<EmbeddedResource Include="**\*.xaml" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" SubType="Designer" Generator="MSBuild:UpdateDesignTimeXaml" />
</ItemGroup>
<ItemGroup Condition="'$(EnableDefaultItems)'=='True' And '$(EnableDefaultCssItems)'=='True' And '$(EnableDefaultEmbeddedResourceItems)'=='True'">
<EmbeddedResource Include="**\*.css" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" />
</ItemGroup>
</Project>

Просмотреть файл

@ -1,18 +0,0 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
NOTE: we cannot update/remove existing default items in our props file, as it is
imported *before* the default items are created by Microsoft.NET.Sdk.DefaultItems.props.
Doing it here works, but means that it will override things users do in their csproj.
Unfortunately there is no way to work around this without adding a new extension point to
the sdk props.
-->
<ItemGroup Condition="'$(EnableDefaultItems)'=='True' And '$(EnableDefaultXamlItems)'=='True' And '$(EnableDefaultEmbeddedResourceItems)'=='True'">
<Compile Update="**\*.xaml$(DefaultLanguageSourceExtension)" DependentUpon="%(Filename)" SubType="Code" />
<None Remove="**\*.xaml" Condition="'$(EnableDefaultNoneItems)'=='True'" />
</ItemGroup>
<ItemGroup Condition="'$(EnableDefaultItems)'=='True' And '$(EnableDefaultCssItems)'=='True' And '$(EnableDefaultEmbeddedResourceItems)'=='True'">
<None Remove="**\*.css" Condition="'$(EnableDefaultNoneItems)'=='True'" />
</ItemGroup>
</Project>

Просмотреть файл

@ -1,75 +0,0 @@
<Project>
<ItemGroup Condition="$(TargetFramework.StartsWith('Xamarin.iOS')) != true AND $(TargetFramework.StartsWith('net6.0-ios')) != true ">
<Compile Remove="**\*.iOS.cs" />
<None Include="**\*.iOS.cs" />
<Compile Remove="**\iOS\*.cs" />
<None Include="**\iOS\*.cs" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('Xamarin.Mac')) != true ">
<Compile Remove="**\*.Mac.cs" />
<None Include="**\*.Mac.cs" />
<Compile Remove="**\Mac\*.cs" />
<None Include="**\Mac\*.cs" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('Xamarin.Mac')) != true AND $(TargetFramework.StartsWith('Xamarin.iOS')) != true AND $(TargetFramework.StartsWith('net6.0-ios')) != true ">
<Compile Remove="**\*.MaciOS.cs" />
<None Include="**\*.MaciOS.cs" />
<Compile Remove="**\MaciOS\*.cs" />
<None Include="**\MaciOS\*.cs" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('MonoAndroid')) != true AND $(TargetFramework.StartsWith('net6.0-android')) != true ">
<Compile Remove="**\*.Android.cs" />
<None Include="**\*.Android.cs" />
<Compile Remove="**\Android\*.cs" />
<None Include="**\Android\*.cs" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('netstandard')) != true ">
<Compile Remove="**\*.Standard.cs" />
<None Include="**\*.Standard.cs" />
<Compile Remove="**\Standard\*.cs" />
<None Include="**\Standard\*.cs" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('netcoreapp')) != true ">
<Compile Remove="**\*.Win32.cs" />
<None Include="**\*.Win32.cs" />
<Compile Remove="**\*.xaml.cs" />
<None Include="**\*.xaml.cs" />
<Compile Remove="**\*.xaml" />
<None Include="**\*.xaml" />
<Compile Remove="**\Win32\*.cs" />
<None Include="**\Win32\*.cs" />
</ItemGroup>
<!-- Android -->
<PropertyGroup Condition="$(TargetFramework.StartsWith('net6.0-android'))">
<DefineConstants>$(DefineConstants);MONOANDROID</DefineConstants>
</PropertyGroup>
<!-- iOS -->
<PropertyGroup Condition=" '$(TargetFramework)' == 'net6.0-ios' ">
<DefineConstants>$(DefineConstants);IOS</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="$(TargetFramework.StartsWith('netcoreapp')) == true ">
<UseWpf>true</UseWpf>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|netstandard2.0|AnyCPU'">
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
</PropertyGroup>
<!-- If this becomes part of the product we will remove these but for now it's useful having them all in one place -->
<ItemGroup Condition="$(TargetFramework.StartsWith('MonoAndroid')) == true OR '$(TargetPlatformIdentifier)' == 'android' OR '$(TargetFramework)' == 'net6.0-android'">
<PackageReference Include="Xamarin.AndroidX.Lifecycle.LiveData" Version="2.2.0.4" />
<PackageReference Include="Xamarin.Google.Android.Material" Version="1.2.1.1" />
<PackageReference Include="Xamarin.AndroidX.Legacy.Support.V4" Version="1.0.0.6" />
</ItemGroup>
<PropertyGroup Condition="$(TargetFramework.StartsWith('net5.0-windows')) == true">
<TargetPlatformMinVersion>10.0.17134.0</TargetPlatformMinVersion>
<RuntimeIdentifiers>win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>
<DefineConstants>$(DefineConstants);DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP;UWP_16299;UWP_18362;UWP_17134</DefineConstants>
<NoWarn>$(NoWarn);NU5104</NoWarn>
</PropertyGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('net5.0-windows')) == true">
<PackageReference Include="Microsoft.WinUI" Version="3.0.0-preview3.201113.0" />
</ItemGroup>
</Project>

Просмотреть файл

@ -1,65 +0,0 @@
<?xml version="1.0"?>
<package >
<metadata>
<id>Xamarin.Forms.Visual.Material</id>
<version>$version$</version>
<authors>Microsoft</authors>
<owners>microsoft xamarin</owners>
<tags>xamarin forms visual material xamarinforms xamarinformsvisualmaterial xamarin.forms.visual.material</tags>
<license type="expression">MIT</license>
<icon>Assets\xamarin_128x128.png</icon>
<projectUrl>http://xamarin.com/forms</projectUrl>
<repository type="git" url="https://github.com/xamarin/xamarin.forms"/>
<requireLicenseAcceptance>true</requireLicenseAcceptance>
<description>Material renderers for Xamarin.Forms</description>
<copyright>© Microsoft Corporation. All rights reserved.</copyright>
<dependencies>
<group>
<dependency id="Xamarin.Forms" version="$version$"/>
</group>
<group targetFramework="MonoAndroid10">
<dependency id="Xamarin.Forms" version="$version$"/>
</group>
<group targetFramework="MonoAndroid10.0">
<dependency id="Xamarin.AndroidX.Lifecycle.LiveData" version="2.2.0.4" />
<dependency id="Xamarin.Google.Android.Material" version="1.2.1.1" />
</group>
<group targetFramework="Xamarin.iOS10">
<dependency id="Xamarin.iOS.MaterialComponents" version="92.0.0"/>
</group>
<group targetFramework="tizen40">
<dependency id="Tizen.NET" version="4.0.0"/>
<dependency id="Tizen.NET.MaterialComponents" version="0.9.7-preview"/>
</group>
</dependencies>
</metadata>
<files>
<!--Icon-->
<file src="..\Assets\xamarin_128x128.png" target="Assets\" />
<!--netstandard-->
<file src="_._" target="lib\netstandard1.0\_._" />
<!--Android 10-->
<file src="_._" target="lib\MonoAndroid10\_._" />
<file src="Xamarin.Forms.Visual.Material.targets" target="build\MonoAndroid10\Xamarin.Forms.Visual.Material.targets" />
<!--Android 10 buildTransitive-->
<file src="Xamarin.Forms.Visual.Material.targets" target="buildTransitive\MonoAndroid10\Xamarin.Forms.Visual.Material.targets" />
<!--Android 10.0-->
<file src="..\Xamarin.Forms.Material.Android\bin\$Configuration$\monoandroid10.0\Xamarin.Forms.Material.dll" target="lib\MonoAndroid10.0" />
<file src="..\Xamarin.Forms.Material.Android\bin\$Configuration$\monoandroid10.0\Xamarin.Forms.Material.*pdb" target="lib\MonoAndroid10.0" />
<file src="..\Xamarin.Forms.Material.Android\bin\$Configuration$\monoandroid10.0\Xamarin.Forms.Material.*mdb" target="lib\MonoAndroid10.0" />
<!--iOS-->
<file src="..\Xamarin.Forms.Material.iOS\bin\$Configuration$\Xamarin.Forms.Material.dll" target="lib\Xamarin.iOS10" />
<file src="..\Xamarin.Forms.Material.iOS\bin\$Configuration$\Xamarin.Forms.Material.*pdb" target="lib\Xamarin.iOS10" />
<file src="..\Xamarin.Forms.Material.iOS\bin\$Configuration$\Xamarin.Forms.Material.*mdb" target="lib\Xamarin.iOS10" />
<!--Tizen-->
<file src="..\Xamarin.Forms.Material.Tizen\bin\$Configuration$\tizen40\Xamarin.Forms.Material.dll" target="lib\tizen40" />
<file src="..\Xamarin.Forms.Material.Tizen\bin\$Configuration$\tizen40\Xamarin.Forms.Material.*pdb" target="lib\tizen40" />
</files>
</package>

Просмотреть файл

@ -1,275 +0,0 @@
<?xml version="1.0"?>
<package >
<metadata>
<id>Xamarin.Forms</id>
<version>$version$</version>
<authors>Microsoft</authors>
<owners>microsoft xamarin</owners>
<tags>xamarin forms xamarinforms xamarin.forms</tags>
<license type="expression">MIT</license>
<icon>Assets\xamarin_128x128.png</icon>
<projectUrl>http://xamarin.com/forms</projectUrl>
<repository type="git" url="https://github.com/xamarin/xamarin.forms"/>
<requireLicenseAcceptance>true</requireLicenseAcceptance>
<description>Build native UIs for iOS, Android, UWP, macOS, Tizen and many more from a single, shared C# codebase</description>
<copyright>© Microsoft Corporation. All rights reserved.</copyright>
<dependencies>
<group targetFramework="MonoAndroid10.0">
<dependency id="Xamarin.AndroidX.Lifecycle.LiveData" version="2.2.0.4" />
<dependency id="Xamarin.Google.Android.Material" version="1.2.1.1" />
<dependency id="Xamarin.AndroidX.Legacy.Support.V4" version="1.0.0.6" />
<dependency id="Xamarin.AndroidX.Browser" version="1.3.0" />
</group>
<!--<group targetFramework="net6.0-windows10.0.18362.0">
<dependency id="Microsoft.WinUI" version="3.0.0-preview3.201113.0" />
</group>-->
<group targetFramework="netstandard2.0">
</group>
<group targetFramework="Xamarin.iOS10">
</group>
<!-- <group targetFramework="tizen40">
<dependency id="Tizen.NET" version="4.0.0"/>
<dependency id="SkiaSharp.Views" version="2.80.2"/>
</group> -->
</dependencies>
<!-- DO NOT DELETE THESE REFERENCES -->
<!-- IF YOU DELETE THESE REFERENCES THE PACKAGE WILL NOT WORK ON MAC -->
<!-- https://github.com/xamarin/Xamarin.Forms/pull/2575 -->
<!-- DO NOT DELETE THESE REFERENCES -->
<references>
<group>
<reference file="Xamarin.Forms.Core.dll" />
<reference file="Xamarin.Forms.Xaml.dll" />
<reference file="Xamarin.Platform.dll" />
</group>
<group targetFramework="Xamarin.iOS10">
<reference file="Xamarin.Forms.Core.dll" />
<reference file="Xamarin.Forms.Xaml.dll" />
<reference file="Xamarin.Forms.Platform.iOS.dll" />
<reference file="Xamarin.Platform.dll" />
</group>
<group targetFramework="MonoAndroid10.0">
<reference file="Xamarin.Forms.Core.dll" />
<reference file="Xamarin.Forms.Xaml.dll" />
<reference file="FormsViewGroup.dll" />
<reference file="Xamarin.Forms.Platform.Android.dll" />
<reference file="Xamarin.Platform.dll" />
</group>
<!--<group targetFramework="net6.0-windows10.0.18362.0">
<reference file="Xamarin.Forms.Core.dll" />
<reference file="Xamarin.Forms.Xaml.dll" />
<reference file="Xamarin.Forms.Platform.UAP.dll" />
<reference file="Xamarin.Platform.dll" />
</group>-->
<!-- <group targetFramework="tizen40">
<reference file="Xamarin.Forms.Core.dll" />
<reference file="Xamarin.Forms.Platform.Tizen.dll" />
<reference file="Xamarin.Forms.Platform.dll" />
<reference file="Xamarin.Forms.Xaml.dll" />
</group> -->
</references>
</metadata>
<files>
<!--Icon-->
<file src="..\Assets\xamarin_128x128.png" target="Assets\" />
<!--netstandard-->
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="lib\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.*pdb" target="lib\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.*mdb" target="lib\netstandard2.0" />
<file src="..\eng\docs\Xamarin.Forms.Core.xml" target="lib\netstandard2.0" />
<file src="..\eng\docs\Xamarin.Forms.Xaml.xml" target="lib\netstandard2.0" />
<file src="..\eng\docs\**\Xamarin.Forms.Core.xml" target="lib\netstandard2.0" />
<file src="..\eng\docs\**\Xamarin.Forms.Xaml.xml" target="lib\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="lib\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.*pdb" target="lib\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.*mdb" target="lib\netstandard2.0" />
<!--Handlers-->
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\netstandard2.0\Xamarin.Platform.dll" target="lib\netstandard2.0" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\netstandard2.0\Xamarin.Platform.*pdb" target="lib\netstandard2.0" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\netstandard2.0\Xamarin.Platform.*mdb" target="lib\netstandard2.0" />
<!--Xamlc stuff-->
<file src="Xamarin.Forms.targets" target="build" />
<file src="Xamarin.Forms.props" target="build" />
<file src="Xamarin.Forms.DefaultItems.targets" target="build" />
<file src="Xamarin.Forms.DefaultItems.props" target="build" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Build.Tasks.dll" target="build\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="build\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="build\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Mono.Cecil.dll" target="build\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Mono.Cecil.Mdb.dll" target="build\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Mono.Cecil.Pdb.dll" target="build\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Mono.Cecil.Rocks.dll" target="build\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\System.CodeDom.dll" target="build\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Xamarin.Forms.Build.Tasks.dll" target="build\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Xamarin.Forms.Core.dll" target="build\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Xamarin.Forms.Xaml.dll" target="build\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Mono.Cecil.dll" target="build\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Mono.Cecil.Mdb.dll" target="build\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Mono.Cecil.Pdb.dll" target="build\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Mono.Cecil.Rocks.dll" target="build\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\System.ValueTuple.dll" target="build\net462" />
<!--Xamlc stuff buildTransitive-->
<file src="Xamarin.Forms.targets" target="buildTransitive" />
<file src="Xamarin.Forms.props" target="buildTransitive" />
<file src="Xamarin.Forms.DefaultItems.targets" target="buildTransitive" />
<file src="Xamarin.Forms.DefaultItems.props" target="buildTransitive" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Build.Tasks.dll" target="buildTransitive\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="buildTransitive\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="buildTransitive\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Mono.Cecil.dll" target="buildTransitive\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Mono.Cecil.Mdb.dll" target="buildTransitive\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Mono.Cecil.Pdb.dll" target="buildTransitive\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Mono.Cecil.Rocks.dll" target="buildTransitive\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\System.CodeDom.dll" target="buildTransitive\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Xamarin.Forms.Build.Tasks.dll" target="buildTransitive\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Xamarin.Forms.Core.dll" target="buildTransitive\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Xamarin.Forms.Xaml.dll" target="buildTransitive\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Mono.Cecil.dll" target="buildTransitive\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Mono.Cecil.Mdb.dll" target="buildTransitive\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Mono.Cecil.Pdb.dll" target="buildTransitive\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Mono.Cecil.Rocks.dll" target="buildTransitive\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\System.ValueTuple.dll" target="buildTransitive\net462" />
<!-- Xaml Design-time Stuff -->
<file src="..\src\Forms\src\Xamarin.Forms.Core.Design\bin\$Configuration$\Xamarin.Forms.Core.Design.dll" target="lib\netstandard2.0\Design" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml.Design\bin\$Configuration$\Xamarin.Forms.Xaml.Design.dll" target="lib\netstandard2.0\Design" />
<!-- <file src="..\src\Forms\src\Xamarin.Forms.Core.Design\bin\$Configuration$\Xamarin.Forms.Core.Design.dll" target="lib\netstandard1.0\Design" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml.Design\bin\$Configuration$\Xamarin.Forms.Xaml.Design.dll" target="lib\netstandard1.0\Design" /> -->
<file src="..\src\Forms\src\Xamarin.Forms.Core.Design\bin\$Configuration$\Xamarin.Forms.Core.Design.dll" target="lib\MonoAndroid10.0\Design" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml.Design\bin\$Configuration$\Xamarin.Forms.Xaml.Design.dll" target="lib\MonoAndroid10.0\Design" />
<file src="..\src\Forms\src\Xamarin.Forms.Core.Design\bin\$Configuration$\Xamarin.Forms.Core.Design.dll" target="lib\Xamarin.iOS10\Design" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml.Design\bin\$Configuration$\Xamarin.Forms.Xaml.Design.dll" target="lib\Xamarin.iOS10\Design" />
<file src="..\src\Forms\src\Xamarin.Forms.Core.Design\bin\$Configuration$\Xamarin.Forms.Core.Design.dll" target="lib\net5.0-windows10.0.18362.0\Design" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml.Design\bin\$Configuration$\Xamarin.Forms.Xaml.Design.dll" target="lib\net5.0-windows10.0.18362.0\Design" />
<!-- <file src="..\src\Forms\src\Xamarin.Forms.Core.Design\bin\$Configuration$\Xamarin.Forms.Core.Design.dll" target="lib\tizen40\Design" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml.Design\bin\$Configuration$\Xamarin.Forms.Xaml.Design.dll" target="lib\tizen40\Design" /> -->
<!--Android 10-->
<file src="proguard.cfg" target="build\MonoAndroid10\proguard.cfg" />
<file src="proguard.cfg" target="buildTransitive\MonoAndroid10\proguard.cfg" />
<!--Android 10-->
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Android\bin\$Configuration$\MonoAndroid10.0\Xamarin.Forms.Platform.Android.dll" target="lib\MonoAndroid10.0" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Android\bin\$Configuration$\MonoAndroid10.0\Xamarin.Forms.Platform.Android.*pdb" target="lib\MonoAndroid10.0" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Android.FormsViewGroup\bin\$Configuration$\FormsViewGroup.dll" target="lib\MonoAndroid10.0" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Android.FormsViewGroup\bin\$Configuration$\FormsViewGroup.*pdb" target="lib\MonoAndroid10.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="lib\MonoAndroid10.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.*pdb" target="lib\MonoAndroid10.0" />
<file src="..\eng\docs\Xamarin.Forms.Core.xml" target="lib\MonoAndroid10.0" />
<file src="..\eng\docs\Xamarin.Forms.Xaml.xml" target="lib\MonoAndroid10.0" />
<file src="..\eng\docs\**\Xamarin.Forms.Core.xml" target="lib\MonoAndroid10.0" />
<file src="..\eng\docs\**\Xamarin.Forms.Xaml.xml" target="lib\MonoAndroid10.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="lib\MonoAndroid10.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.*pdb" target="lib\MonoAndroid10.0" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\monoandroid10.0\Xamarin.Platform.dll" target="lib\MonoAndroid10.0" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\monoandroid10.0\Xamarin.Platform.*pdb" target="lib\MonoAndroid10.0" />
<!--iPhone Unified-->
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\Xamarin.Forms.Platform.iOS.dll" target="lib\Xamarin.iOS10" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\Xamarin.Forms.Platform.iOS.*pdb" target="lib\Xamarin.iOS10" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\Xamarin.Forms.Platform.iOS.*mdb" target="lib\Xamarin.iOS10" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="lib\Xamarin.iOS10" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.*pdb" target="lib\Xamarin.iOS10" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.*mdb" target="lib\Xamarin.iOS10" />
<file src="..\eng\docs\Xamarin.Forms.Core.xml" target="lib\Xamarin.iOS10" />
<file src="..\eng\docs\Xamarin.Forms.Xaml.xml" target="lib\Xamarin.iOS10" />
<file src="..\eng\docs\**\Xamarin.Forms.Core.xml" target="lib\Xamarin.iOS10" />
<file src="..\eng\docs\**\Xamarin.Forms.Xaml.xml" target="lib\Xamarin.iOS10" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="lib\Xamarin.iOS10" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.*pdb" target="lib\Xamarin.iOS10" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.*mdb" target="lib\Xamarin.iOS10" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\Xamarin.iOS10\Xamarin.Platform.dll" target="lib\Xamarin.iOS10" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\Xamarin.iOS10\Xamarin.Platform.*pdb" target="lib\Xamarin.iOS10" />
<!--net5.0-windows10.0.18362.0-->
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.UAP\bin\$Configuration$\net5.0-windows10.0.18362.0\Xamarin.Forms.Platform.UAP.dll" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.UAP\bin\$Configuration$\net5.0-windows10.0.18362.0\Xamarin.Forms.Platform.UAP.*pdb" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.UAP\bin\$Configuration$\net5.0-windows10.0.18362.0\Xamarin.Forms.Platform.UAP.*pri" target="runtimes\net5.0-windows10.0.18362.0\native" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.*pdb" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\eng\docs\Xamarin.Forms.Core.xml" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.*pdb" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\eng\docs\Xamarin.Forms.Xaml.xml" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\netstandard2.0\Xamarin.Platform.dll" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\netstandard2.0\Xamarin.Platform.*pdb" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.UAP\bin\$Configuration$\net5.0-windows10.0.18362.0\Xamarin.Forms.Platform.UAP\**\*.xaml" target="lib\net5.0-windows10.0.18362.0\Xamarin.Forms.Platform.UAP" />
<!-- iOS Localized String Resource Assemblies -->
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\ar\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\ar" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\ca\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\ca" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\cs\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\cs" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\da\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\da" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\de\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\de" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\el\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\el" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\es\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\es" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\fi\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\fi" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\fr\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\fr" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\he\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\he" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\hi\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\hi" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\hr\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\hr" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\hu\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\hu" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\id\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\id" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\it\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\it" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\ja\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\ja" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\ko\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\ko" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\ms\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\ms" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\nb\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\nb" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\nl\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\nl" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\pl\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\pl" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\pt-BR\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\pt-BR" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\pt\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\pt" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\ro\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\ro" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\ru\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\ru" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\sk\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\sk" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\sv\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\sv" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\th\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\th" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\tr\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\tr" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\uk\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\uk" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\vi\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\vi" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\zh-Hans\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\zh-Hans" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\zh-Hant\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\zh-Hant" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\zh-HK\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\zh-HK" />
<!--Tizen-->
<!-- <file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Tizen\bin\$Configuration$\tizen40\Xamarin.Forms.Platform.Tizen.dll" target="lib\tizen40" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Tizen\bin\$Configuration$\tizen40\Xamarin.Forms.Platform.Tizen.*pdb" target="lib\tizen40" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Tizen\bin\$Configuration$\tizen40\Xamarin.Forms.Platform.Tizen.dll" target="lib\tizen40" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="lib\tizen40" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.*pdb" target="lib\tizen40" />
<file src="..\eng\docs\Xamarin.Forms.Core.xml" target="lib\tizen40" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="lib\tizen40" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.*pdb" target="lib\tizen40" />
<file src="..\eng\docs\Xamarin.Forms.Xaml.xml" target="lib\tizen40" /> -->
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Android\bin\$Configuration$\MonoAndroid10.0\Xamarin.Forms.Platform.Android.dll" target="ref\MonoAndroid10.0" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Android.FormsViewGroup\bin\$Configuration$\FormsViewGroup.dll" target="ref\MonoAndroid10.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="ref\MonoAndroid10.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="ref\MonoAndroid10.0" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\monoandroid10.0\Xamarin.Platform.dll" target="ref\MonoAndroid10.0" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\Xamarin.Forms.Platform.iOS.dll" target="ref\Xamarin.iOS10" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="ref\Xamarin.iOS10" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="ref\Xamarin.iOS10" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\xamarin.ios10\Xamarin.Platform.dll" target="ref\Xamarin.iOS10" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.UAP\bin\$Configuration$\net5.0-windows10.0.18362.0\Xamarin.Forms.Platform.UAP.dll" target="ref\net5.0-windows10.0.18362.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="ref\net5.0-windows10.0.18362.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="ref\net5.0-windows10.0.18362.0" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\netstandard2.0\Xamarin.Platform.dll" target="ref\net5.0-windows10.0.18362.0" />
</files>
</package>

Просмотреть файл

@ -1,19 +0,0 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
When using Sdk-style projects and default embedded resource items are enabled, automatically
add the XAML files and fix up item metadata to pair them with code files.
This is in the props file, not the targets file, so that projects can remove/update these items.
The default value for EnableDefaultXamlItems is set in the targets, which works because
the property evaluation pass comes before the item evaluation pass.
The actual item groups are in a separate conditionally-imported file as they use constructs that
are not compatible with older MSBuild versions.
-->
<Import Project="$(MSBuildThisFileDirectory)Xamarin.Forms.DefaultItems.props" Condition="'$(MSBuildSDKsPath)'!=''" />
<PropertyGroup>
<_IsHotRestartDefined>$([System.Text.RegularExpressions.Regex]::IsMatch('$(DefineConstants.Trim())', '(^|;)HOTRESTART($|;)'))</_IsHotRestartDefined>
<DefineConstants Condition="!$(_IsHotRestartDefined) And '$(IsHotRestartBuild)' == 'true'">HOTRESTART;$(DefineConstants)</DefineConstants>
</PropertyGroup>
</Project>

Просмотреть файл

@ -1,211 +0,0 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<_XFBuildTasksLocation Condition="'$(_XFBuildTasksLocation)' == '' AND '$(MSBuildRuntimeType)' == 'Core'">$(MSBuildThisFileDirectory)netstandard2.0\</_XFBuildTasksLocation>
<_XFBuildTasksLocation Condition="'$(_XFBuildTasksLocation)' == ''">$(MSBuildThisFileDirectory)net462\</_XFBuildTasksLocation>
</PropertyGroup>
<UsingTask TaskName="Xamarin.Forms.Build.Tasks.XamlGTask" AssemblyFile="$(_XFBuildTasksLocation)Xamarin.Forms.Build.Tasks.dll" />
<UsingTask TaskName="Xamarin.Forms.Build.Tasks.CssGTask" AssemblyFile="$(_XFBuildTasksLocation)Xamarin.Forms.Build.Tasks.dll" />
<UsingTask TaskName="Xamarin.Forms.Build.Tasks.XamlCTask" AssemblyFile="$(_XFBuildTasksLocation)Xamarin.Forms.Build.Tasks.dll" />
<PropertyGroup>
<SynthesizeLinkMetadata>true</SynthesizeLinkMetadata>
<EnableDefaultXamlItems Condition="'$(EnableDefaultXamlItems)'==''">True</EnableDefaultXamlItems>
<_DefaultXamlItemsEnabled>False</_DefaultXamlItemsEnabled>
<EnableDefaultCssItems Condition="'$(EnableDefaultCssItems)'==''">True</EnableDefaultCssItems>
<_DefaultCssItemsEnabled>False</_DefaultCssItemsEnabled>
<!-- The WINUI check for this only runs when there is an empty string so I just convert false to an empty string to fall in line with our other properties -->
<SkipMicrosoftUIXamlCheckTargetPlatformVersion Condition="'$(SkipMicrosoftUIXamlCheckTargetPlatformVersion)'==''">true</SkipMicrosoftUIXamlCheckTargetPlatformVersion>
<SkipMicrosoftUIXamlCheckTargetPlatformVersion Condition="'$(SkipMicrosoftUIXamlCheckTargetPlatformVersion)'=='false'"></SkipMicrosoftUIXamlCheckTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(MSBuildThisFileDirectory)Xamarin.Forms.DefaultItems.targets" Condition="'$(MSBuildSDKsPath)'!=''" />
<ItemGroup>
<ProjectCapability Include="XamarinForms" />
</ItemGroup>
<!-- Check Tasks ABI and other validations -->
<PropertyGroup>
<_XFTargetsImportedAgain Condition="'$(_XFTargetsImported)'=='True'">True</_XFTargetsImportedAgain>
<_XFTargetsImported>True</_XFTargetsImported>
<IsXBuild Condition="'$(MSBuildRuntimeType)' == ''">true</IsXBuild>
<IsXBuild Condition="'$(MSBuildRuntimeType)' != ''">false</IsXBuild>
</PropertyGroup>
<Target Name="_ValidateXFTasks" BeforeTargets="_CheckForInvalidConfigurationAndPlatform" Condition="'$(XFDisableTargetsValidation)' != 'True'">
<Error Code="XF001"
Text="Xamarin.Forms targets have been imported multiple times. Please check your project file and remove the duplicate import(s)."
Condition="'$(_XFTargetsImportedAgain)' == 'True'" />
</Target>
<Target Name="_ValidateMSBuild" BeforeTargets="_CheckForInvalidConfigurationAndPlatform">
<Error Code="XF003"
Text="Xamarin.Forms require msbuild. xbuild is no longer supported."
Condition="'$(IsXBuild)' == 'true'" />
</Target>
<Target Name="_ValidateNETFrameworkVersion"
BeforeTargets="_CheckForInvalidConfigurationAndPlatform"
Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework' AND '$(TargetFrameworkVersion.Substring(1))' &lt; '4.6.1' AND '$(XFDisableFrameworkVersionValidation)' != 'True'">
<Error Code="XF004"
Text="XF requires .NETFramework >= v4.6.1. You have '$(TargetFrameworkVersion)'" />
</Target>
<!-- XamlG -->
<Target
Name="UpdateDesignTimeXaml"
DependsOnTargets="XamlG"/>
<PropertyGroup>
<CoreCompileDependsOn>
XamlG;
$(CoreCompileDependsOn);
</CoreCompileDependsOn>
</PropertyGroup>
<Target
Name="_FindXamlGFiles"
DependsOnTargets="PrepareResourceNames">
<ItemGroup>
<_XamlGInputs
Include="@(EmbeddedResource)"
Condition="'%(Extension)' == '.xaml' AND '$(DefaultLanguageSourceExtension)' == '.cs' AND '%(TargetPath)' != ''" />
<_XamlGOutputs
Include="@(_XamlGInputs->'$(IntermediateOutputPath)%(TargetPath).g.cs')" />
</ItemGroup>
</Target>
<Target
Name="XamlG"
BeforeTargets="BeforeCompile"
DependsOnTargets="_FindXamlGFiles; PrepareResourceNames; AfterResolveReferences"
Inputs="@(_XamlGInputs)"
Outputs="@(_XamlGOutputs)">
<PropertyGroup>
<ReferencedAssemblies>@(ReferencePath)</ReferencedAssemblies>
</PropertyGroup>
<XamlGTask
XamlFiles="@(_XamlGInputs)"
OutputFiles="@(_XamlGOutputs)"
Language="$(Language)"
References = "$(ReferencedAssemblies)"
AssemblyName="$(AssemblyName)" />
<ItemGroup>
<FileWrites Include="@(_XamlGOutputs)" />
<Compile Include="@(_XamlGOutputs)" />
</ItemGroup>
</Target>
<!-- XamlC -->
<PropertyGroup>
<CompileDependsOn>
$(CompileDependsOn);
XamlC;
</CompileDependsOn>
</PropertyGroup>
<Target Name="XamlC"
AfterTargets="AfterCompile"
DependsOnTargets="_FindXamlGFiles"
Inputs="$(IntermediateOutputPath)$(TargetFileName)"
Outputs="$(IntermediateOutputPath)XamlC.stamp"
Condition=" '$(DesignTimeBuild)' != 'True' AND '@(_XamlGInputs->Count())' != '0' ">
<PropertyGroup>
<_XFXamlCValidateOnly>$(XFXamlCValidateOnly)</_XFXamlCValidateOnly>
<_XFXamlCValidateOnly Condition="'$(BuildingForLiveUnitTesting)' == 'True' ">True</_XFXamlCValidateOnly>
</PropertyGroup>
<XamlCTask
Assembly = "$(IntermediateOutputPath)$(TargetFileName)"
ReferencePath = "@(ReferencePath)"
OptimizeIL = "true"
DebugSymbols = "$(DebugSymbols)"
DebugType = "$(DebugType)"
ValidateOnly = "$(_XFXamlCValidateOnly)"
KeepXamlResources = "$(XFKeepXamlResources)" />
<Touch Files="$(IntermediateOutputPath)XamlC.stamp" AlwaysCreate="True" />
<ItemGroup>
<FileWrites Include="$(IntermediateOutputPath)XamlC.stamp" />
</ItemGroup>
</Target>
<!-- CssG -->
<PropertyGroup>
<CoreCompileDependsOn>
CssG;
$(CoreCompileDependsOn);
</CoreCompileDependsOn>
</PropertyGroup>
<Target Name="_FindCSSFiles" DependsOnTargets="PrepareResourceNames">
<ItemGroup>
<_CSSInputs Include="@(EmbeddedResource)" Condition="'%(Extension)' == '.css' AND '$(DefaultLanguageSourceExtension)' == '.cs' AND '%(TargetPath)' != ''" />
<_CSSOutputs Include="@(_CSSInputs->'$(IntermediateOutputPath)%(TargetPath).g.cs')" />
</ItemGroup>
</Target>
<Target Name="CssG" BeforeTargets="BeforeCompile" DependsOnTargets="_FindCSSFiles" Inputs="@(_CSSInputs)" Outputs="@(_CSSOutputs)">
<CssGTask
CSSFiles="@(_CSSInputs)"
OutputFiles="@(_CSSOutputs)"
Language = "$(Language)"
AssemblyName = "$(AssemblyName)" />
<ItemGroup>
<FileWrites Include="@(_CSSOutputs)" />
<Compile Include="@(_CSSOutputs)" />
</ItemGroup>
</Target>
<!--
Platform Specific Targets.
We can't use a framework specific targets file because it breaks shared projects i.e. /build/MonoAndroid10/Xamarin.Forms.targets
-->
<!-- MonoAndroid targets. -->
<PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == 'MonoAndroid'">
<CoreCompileDependsOn>
IncludeProguardForAndroid;
$(CoreCompileDependsOn);
</CoreCompileDependsOn>
<PrepareForBuildDependsOn>
ValidateTargetFrameworkVersionForForms;
$(PrepareForBuildDependsOn);
</PrepareForBuildDependsOn>
</PropertyGroup>
<Target Name="IncludeProguardForAndroid" Condition="'$(XFDisableDefaultProguardConfiguration)' != 'True'">
<ItemGroup>
<ProguardConfiguration Include="$(MSBuildThisFileDirectory)MonoAndroid10\proguard.cfg" />
</ItemGroup>
</Target>
<Target Name="ValidateTargetFrameworkVersionForForms" Condition="'$(XFDisableTargetFrameworkValidation)' != 'True'">
<PropertyGroup>
<MinTargetFrameworkVersionForForms>10.0</MinTargetFrameworkVersionForForms>
<TargetFrameworkVersionWithoutV>$(TargetFrameworkVersion.TrimStart('vV'))</TargetFrameworkVersionWithoutV>
</PropertyGroup>
<Error Code="XF005" Condition="$(TargetFrameworkVersionWithoutV) &lt; $(MinTargetFrameworkVersionForForms)"
Text="The %24(TargetFrameworkVersion) for $(ProjectName) ($(TargetFrameworkVersion)) is less than the minimum required %24(TargetFrameworkVersion) for Xamarin.Forms ($(MinTargetFrameworkVersionForForms)). You need to increase the %24(TargetFrameworkVersion) for $(ProjectName)." />
</Target>
<!-- UWP Targets-->
<Target Name="WinUICheckTargetPlatformVersion" BeforeTargets="PrepareForBuild"
Condition="'$(TargetPlatformIdentifier)' == 'UAP' AND '$(TargetPlatformVersion)' != '' AND '$(TargetPlatformMinVersion)' != ''">
<PropertyGroup>
<MicrosoftUIXamlTargetPlatformMinCheckValue>$([System.Version]::Parse('$(TargetPlatformMinVersion)').Build)</MicrosoftUIXamlTargetPlatformMinCheckValue>
</PropertyGroup>
<Warning
Text="Xamarin.Forms recommends TargetPlatformMinVersion &gt;= 10.0.15063.0 (current project is $(MicrosoftUIXamlTargetPlatformMinCheckValue))"
Condition="$(MicrosoftUIXamlTargetPlatformMinCheckValue) &lt; 15063" />
<PropertyGroup>
<MicrosoftUIXamlTargetPlatformCheckValue>$([System.Version]::Parse('$(TargetPlatformVersion)').Build)</MicrosoftUIXamlTargetPlatformCheckValue>
</PropertyGroup>
<Warning
Text="Xamarin.Forms recommends TargetPlatformVersion &gt;= 10.0.18362.0 (current project is $(MicrosoftUIXamlTargetPlatformCheckValue))"
Condition="$(MicrosoftUIXamlTargetPlatformCheckValue) &lt; 18362 AND '$(OutputType)'!='Library'" />
<Warning
Text="Xamarin.Forms recommends TargetPlatformVersion &gt;= 10.0.14393.0 (current project is $(MicrosoftUIXamlTargetPlatformCheckValue))"
Condition="$(MicrosoftUIXamlTargetPlatformCheckValue) &lt; 14393 AND '$(OutputType)'=='Library'" />
</Target>
</Project>

6
.nuspec/package.ps1 Normal file
Просмотреть файл

@ -0,0 +1,6 @@
param ($configuration)
dotnet pack $PSScriptRoot\..\Microsoft.Maui-net6.sln `
-c:$configuration `
-p:SymbolPackageFormat=snupkg `
-bl:$PSScriptRoot\..\artifacts\maui.binlog

971
ControlGallery.sln Normal file
Просмотреть файл

@ -0,0 +1,971 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30503.244
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Controls", "Controls", "{9AD757F5-E57A-459D-A0A7-E0675E045B84}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Compatibility", "Compatibility", "{29AC50BF-B4FB-450B-9386-0C5AD4B84226}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Compatibility.Android", "src\Compatibility\Core\src\Android\Compatibility.Android.csproj", "{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuspec", ".nuspec", "{7E12C50D-A570-4DF1-94E1-8599843FA87C}"
ProjectSection(SolutionItems) = preProject
.nuspec\Microsoft.Maui.Controls.Compatibility.AppLinks.nuspec = .nuspec\Microsoft.Maui.Controls.Compatibility.AppLinks.nuspec
.nuspec\Microsoft.Maui.Controls.Compatibility.GTK.nuspec = .nuspec\Microsoft.Maui.Controls.Compatibility.GTK.nuspec
.nuspec\Microsoft.Maui.Controls.Compatibility.Maps.GTK.nuspec = .nuspec\Microsoft.Maui.Controls.Compatibility.Maps.GTK.nuspec
.nuspec\Microsoft.Maui.Controls.Compatibility.Maps.nuspec = .nuspec\Microsoft.Maui.Controls.Compatibility.Maps.nuspec
.nuspec\Microsoft.Maui.Controls.Compatibility.Maps.WPF.nuspec = .nuspec\Microsoft.Maui.Controls.Compatibility.Maps.WPF.nuspec
.nuspec\Microsoft.Maui.Controls.Compatibility.WPF.nuspec = .nuspec\Microsoft.Maui.Controls.Compatibility.WPF.nuspec
.nuspec\Microsoft.Maui.Controls.Debug.targets = .nuspec\Microsoft.Maui.Controls.Debug.targets
.nuspec\Microsoft.Maui.Controls.DefaultItems.props = .nuspec\Microsoft.Maui.Controls.DefaultItems.props
.nuspec\Microsoft.Maui.Controls.DefaultItems.targets = .nuspec\Microsoft.Maui.Controls.DefaultItems.targets
.nuspec\Microsoft.Maui.Controls.DualScreen.nuspec = .nuspec\Microsoft.Maui.Controls.DualScreen.nuspec
.nuspec\Microsoft.Maui.Controls.MultiTargeting.targets = .nuspec\Microsoft.Maui.Controls.MultiTargeting.targets
.nuspec\Microsoft.Maui.Controls.nuspec = .nuspec\Microsoft.Maui.Controls.nuspec
.nuspec\Microsoft.Maui.Controls.props = .nuspec\Microsoft.Maui.Controls.props
.nuspec\Microsoft.Maui.Controls.targets = .nuspec\Microsoft.Maui.Controls.targets
.nuspec\Microsoft.Maui.Controls.Visual.Material.nuspec = .nuspec\Microsoft.Maui.Controls.Visual.Material.nuspec
.nuspec\Microsoft.Maui.Controls.Visual.Material.targets = .nuspec\Microsoft.Maui.Controls.Visual.Material.targets
.nuspec\proguard.cfg = .nuspec\proguard.cfg
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Controls.Core", "src\Controls\src\Core\Controls.Core.csproj", "{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Handlers", "Handlers", "{31721EFD-3238-462B-B501-41F3D2B50E92}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Controls", "Controls", "{97FA536A-675D-41C7-A90E-97E2F79D1AE2}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{423C21C8-84CB-4A3C-BEB9-1C23D752D90F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{2ACC7FFA-238F-44FD-93CB-4D9B17D8C4BA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Core", "src\Core\src\Core.csproj", "{29913989-0F70-48D8-8EDE-B1DD217F21D1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Compatibility.Android.FormsViewGroup", "src\Compatibility\Core\src\Android.FormsViewGroup\Compatibility.Android.FormsViewGroup.csproj", "{3B72465B-ACAE-43AE-9327-10F372FE5F80}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Compatibility.iOS", "src\Compatibility\Core\src\iOS\Compatibility.iOS.csproj", "{271193C1-6E7C-429C-A36D-3F1BE5267231}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{D5B986A3-7FC9-437E-8030-349AA4698DFD}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{75A2CD30-BB85-4CA6-AC95-86A8A538A690}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Controls.Core.UnitTests", "src\Controls\tests\Core.UnitTests\Controls.Core.UnitTests.csproj", "{00259593-A283-47A5-ACB7-9C3819B16364}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Controls.Xaml", "src\Controls\src\Xaml\Controls.Xaml.csproj", "{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Controls.Maps", "src\Controls\Maps\src\Controls.Maps.csproj", "{F137FAC5-3385-4B19-988B-4A14ED84CCC6}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Controls.Build.Tasks", "src\Controls\src\Build.Tasks\Controls.Build.Tasks.csproj", "{C328C538-B69F-43D2-80EE-3C1EB8254CBA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Core.UnitTests", "src\Core\tests\UnitTests\Core.UnitTests.csproj", "{7A753001-1C3D-404D-A421-2E052A545EAC}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Control Gallery", "Control Gallery", "{F07FDC58-64A0-42DA-8556-09742721F15E}"
EndProject
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Xamarin.Forms.Controls.Issues.Shared", "src\ControlGallery\src\Xamarin.Forms.Controls.Issues.Shared\Xamarin.Forms.Controls.Issues.Shared.shproj", "{0F0DB9CC-EA65-429C-9363-38624BF8F49C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.Controls", "src\ControlGallery\src\Xamarin.Forms.Controls\Xamarin.Forms.Controls.csproj", "{7AD93806-111D-4FDC-B48D-9566765185FF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.ControlGallery.Android", "src\ControlGallery\src\Xamarin.Forms.ControlGallery.Android\Xamarin.Forms.ControlGallery.Android.csproj", "{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Compatibility.Maps", "Compatibility.Maps", "{8A70C15D-86D3-4086-A8C5-E17B299EA970}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Compatibility.Maps.Android", "src\Compatibility\Maps\src\Android\Compatibility.Maps.Android.csproj", "{1D11EC11-4734-47D4-9B62-4D03CFF67090}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Controls.Xaml", "Controls.Xaml", "{E7F90170-B71B-4730-A082-1DF4E4F04420}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Controls.Xaml.Design", "src\Controls\src\Xaml.Design\Controls.Xaml.Design.csproj", "{65BC4888-CC59-428A-9B75-540CF1C09480}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Controls.Xaml.UnitTests", "src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj", "{5997F786-4526-4A4B-BFC6-3832091D6544}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Controls.Core.Design", "src\Controls\src\Core.Design\Controls.Core.Design.csproj", "{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Compatibility.Android.AppLinks", "src\Compatibility\Core\src\Android.AppLinks\Compatibility.Android.AppLinks.csproj", "{10553575-8E27-4E2C-9E88-90B015E80F1C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Controls.CustomAttributes", "src\Controls\tests\CustomAttributes\Controls.CustomAttributes.csproj", "{2964F669-7CD9-4D78-B4D9-804A965D58C0}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{B5E27729-44E8-4BE6-A62E-45FF27449B8F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{5CE892DB-8CA2-42E4-8130-2836D28AD8DB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Compatibility.Android.UnitTests", "src\Compatibility\Core\tests\Android\Compatibility.Android.UnitTests.csproj", "{A4C57790-71D1-467C-A69E-2BD84CB6666C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.ControlGallery.iOS", "src\ControlGallery\src\Xamarin.Forms.ControlGallery.iOS\Xamarin.Forms.ControlGallery.iOS.csproj", "{C7131F14-274F-4B55-ACA9-E81731AD012F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Compatibility.iOS.UnitTests", "src\Compatibility\Core\tests\iOS\Compatibility.iOS.UnitTests.csproj", "{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Compatibility.Maps.iOS", "src\Compatibility\Maps\src\iOS\Compatibility.Maps.iOS.csproj", "{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{52963C98-6AD9-4B57-924F-BE58DC36D746}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{FFCE9E2C-327C-46E7-8AC1-18CB2E982C2E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Core.iOS.UITests", "src\ControlGallery\test\Xamarin.Forms.Core.iOS.UITests\Xamarin.Forms.Core.iOS.UITests.csproj", "{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}"
EndProject
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Xamarin.Forms.Core.UITests.Shared", "src\ControlGallery\src\Xamarin.Forms.Core.UITests.Shared\Xamarin.Forms.Core.UITests.Shared.shproj", "{E175485B-3C8C-47D7-8DD5-F7FED627EB25}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Core.Android.UITests", "src\ControlGallery\test\Xamarin.Forms.Core.Android.UITests\Xamarin.Forms.Core.Android.UITests.csproj", "{A34EBE01-25BF-4E69-A2DC-2288DC625541}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Compatibility.UAP", "src\Compatibility\Core\src\UAP\Compatibility.UAP.csproj", "{DD10263D-D580-4241-9E21-EB5DE0FC83C3}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.ControlGallery.WindowsUniversal", "src\ControlGallery\src\Xamarin.Forms.ControlGallery.WindowsUniversal\Xamarin.Forms.ControlGallery.WindowsUniversal.csproj", "{AC257966-9368-478A-9DF4-F0D28E320FE3}"
EndProject
Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "Xamarin.Forms.ControlGallery.WindowsUniversal (Package)", "src\ControlGallery\src\Xamarin.Forms.ControlGallery.WindowsUniversal (Package)\Xamarin.Forms.ControlGallery.WindowsUniversal (Package).wapproj", "{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Compatibility.UAP.UnitTests", "src\Compatibility\Core\tests\UAP\Compatibility.UAP.UnitTests.csproj", "{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}"
EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
src\ControlGallery\src\Xamarin.Forms.Controls.Issues.Shared\Xamarin.Forms.Controls.Issues.Shared.projitems*{0f0db9cc-ea65-429c-9363-38624bf8f49c}*SharedItemsImports = 13
src\ControlGallery\src\Xamarin.Forms.Controls.Issues.Shared\Xamarin.Forms.Controls.Issues.Shared.projitems*{7ad93806-111d-4fdc-b48d-9566765185ff}*SharedItemsImports = 5
src\ControlGallery\src\Xamarin.Forms.Controls.Issues.Shared\Xamarin.Forms.Controls.Issues.Shared.projitems*{a34ebe01-25bf-4e69-a2dc-2288dc625541}*SharedItemsImports = 4
src\ControlGallery\src\Xamarin.Forms.Core.UITests.Shared\Xamarin.Forms.Core.UITests.projitems*{a34ebe01-25bf-4e69-a2dc-2288dc625541}*SharedItemsImports = 4
src\ControlGallery\src\Xamarin.Forms.Core.UITests.Shared\Xamarin.Forms.Core.UITests.projitems*{e175485b-3c8c-47d7-8dd5-f7fed627eb25}*SharedItemsImports = 13
src\ControlGallery\src\Xamarin.Forms.Controls.Issues.Shared\Xamarin.Forms.Controls.Issues.Shared.projitems*{eadd8100-b3ae-4a31-92c4-267a64a1c6eb}*SharedItemsImports = 4
src\ControlGallery\src\Xamarin.Forms.Core.UITests.Shared\Xamarin.Forms.Core.UITests.projitems*{eadd8100-b3ae-4a31-92c4-267a64a1c6eb}*SharedItemsImports = 4
EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|ARM = Debug|ARM
Debug|ARM64 = Debug|ARM64
Debug|iPhone = Debug|iPhone
Debug|iPhoneSimulator = Debug|iPhoneSimulator
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|ARM = Release|ARM
Release|ARM64 = Release|ARM64
Release|iPhone = Release|iPhone
Release|iPhoneSimulator = Release|iPhoneSimulator
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|ARM.ActiveCfg = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|ARM.Build.0 = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|ARM64.Build.0 = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|iPhone.Build.0 = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|x64.ActiveCfg = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|x64.Build.0 = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|x86.ActiveCfg = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|x86.Build.0 = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|Any CPU.Build.0 = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|ARM.ActiveCfg = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|ARM.Build.0 = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|ARM64.ActiveCfg = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|ARM64.Build.0 = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|iPhone.ActiveCfg = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|iPhone.Build.0 = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|x64.ActiveCfg = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|x64.Build.0 = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|x86.ActiveCfg = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|x86.Build.0 = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|ARM.ActiveCfg = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|ARM.Build.0 = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|ARM64.Build.0 = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|iPhone.Build.0 = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|x64.ActiveCfg = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|x64.Build.0 = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|x86.ActiveCfg = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|x86.Build.0 = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|Any CPU.Build.0 = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|ARM.ActiveCfg = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|ARM.Build.0 = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|ARM64.ActiveCfg = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|ARM64.Build.0 = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|iPhone.ActiveCfg = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|iPhone.Build.0 = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|x64.ActiveCfg = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|x64.Build.0 = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|x86.ActiveCfg = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|x86.Build.0 = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|ARM.ActiveCfg = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|ARM.Build.0 = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|ARM64.Build.0 = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|iPhone.Build.0 = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|x64.ActiveCfg = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|x64.Build.0 = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|x86.ActiveCfg = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|x86.Build.0 = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|Any CPU.Build.0 = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|ARM.ActiveCfg = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|ARM.Build.0 = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|ARM64.ActiveCfg = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|ARM64.Build.0 = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|iPhone.ActiveCfg = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|iPhone.Build.0 = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|x64.ActiveCfg = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|x64.Build.0 = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|x86.ActiveCfg = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|x86.Build.0 = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|ARM.ActiveCfg = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|ARM.Build.0 = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|ARM64.Build.0 = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|iPhone.Build.0 = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|x64.ActiveCfg = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|x64.Build.0 = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|x86.ActiveCfg = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|x86.Build.0 = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|Any CPU.Build.0 = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|ARM.ActiveCfg = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|ARM.Build.0 = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|ARM64.ActiveCfg = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|ARM64.Build.0 = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|iPhone.ActiveCfg = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|iPhone.Build.0 = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|x64.ActiveCfg = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|x64.Build.0 = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|x86.ActiveCfg = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|x86.Build.0 = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|Any CPU.Build.0 = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|ARM.ActiveCfg = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|ARM.Build.0 = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|ARM64.Build.0 = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|iPhone.Build.0 = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|x64.ActiveCfg = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|x64.Build.0 = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|x86.ActiveCfg = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|x86.Build.0 = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|Any CPU.ActiveCfg = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|Any CPU.Build.0 = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|ARM.ActiveCfg = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|ARM.Build.0 = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|ARM64.ActiveCfg = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|ARM64.Build.0 = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|iPhone.ActiveCfg = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|iPhone.Build.0 = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|x64.ActiveCfg = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|x64.Build.0 = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|x86.ActiveCfg = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|x86.Build.0 = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|Any CPU.Build.0 = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|ARM.ActiveCfg = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|ARM.Build.0 = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|ARM64.Build.0 = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|iPhone.Build.0 = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|x64.ActiveCfg = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|x64.Build.0 = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|x86.ActiveCfg = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|x86.Build.0 = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|Any CPU.ActiveCfg = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|Any CPU.Build.0 = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|ARM.ActiveCfg = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|ARM.Build.0 = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|ARM64.ActiveCfg = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|ARM64.Build.0 = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|iPhone.ActiveCfg = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|iPhone.Build.0 = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|x64.ActiveCfg = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|x64.Build.0 = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|x86.ActiveCfg = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|x86.Build.0 = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|ARM.ActiveCfg = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|ARM.Build.0 = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|ARM64.Build.0 = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|iPhone.Build.0 = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|x64.ActiveCfg = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|x64.Build.0 = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|x86.ActiveCfg = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|x86.Build.0 = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|Any CPU.Build.0 = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|ARM.ActiveCfg = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|ARM.Build.0 = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|ARM64.ActiveCfg = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|ARM64.Build.0 = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|iPhone.ActiveCfg = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|iPhone.Build.0 = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|x64.ActiveCfg = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|x64.Build.0 = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|x86.ActiveCfg = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|x86.Build.0 = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|ARM.ActiveCfg = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|ARM.Build.0 = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|ARM64.Build.0 = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|iPhone.Build.0 = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|x64.ActiveCfg = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|x64.Build.0 = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|x86.ActiveCfg = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|x86.Build.0 = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|Any CPU.Build.0 = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|ARM.ActiveCfg = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|ARM.Build.0 = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|ARM64.ActiveCfg = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|ARM64.Build.0 = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|iPhone.ActiveCfg = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|iPhone.Build.0 = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|x64.ActiveCfg = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|x64.Build.0 = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|x86.ActiveCfg = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|x86.Build.0 = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|ARM.ActiveCfg = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|ARM.Build.0 = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|ARM64.Build.0 = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|iPhone.Build.0 = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|x64.ActiveCfg = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|x64.Build.0 = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|x86.ActiveCfg = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|x86.Build.0 = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|Any CPU.Build.0 = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|ARM.ActiveCfg = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|ARM.Build.0 = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|ARM64.ActiveCfg = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|ARM64.Build.0 = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|iPhone.ActiveCfg = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|iPhone.Build.0 = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|x64.ActiveCfg = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|x64.Build.0 = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|x86.ActiveCfg = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|x86.Build.0 = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|ARM.ActiveCfg = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|ARM.Build.0 = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|ARM64.Build.0 = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|iPhone.Build.0 = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|x64.ActiveCfg = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|x64.Build.0 = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|x86.ActiveCfg = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|x86.Build.0 = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|Any CPU.Build.0 = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|ARM.ActiveCfg = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|ARM.Build.0 = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|ARM64.ActiveCfg = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|ARM64.Build.0 = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|iPhone.ActiveCfg = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|iPhone.Build.0 = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|x64.ActiveCfg = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|x64.Build.0 = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|x86.ActiveCfg = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|x86.Build.0 = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|ARM.ActiveCfg = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|ARM.Build.0 = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|ARM64.Build.0 = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|iPhone.Build.0 = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|x64.ActiveCfg = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|x64.Build.0 = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|x86.ActiveCfg = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|x86.Build.0 = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|Any CPU.Build.0 = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|ARM.ActiveCfg = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|ARM.Build.0 = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|ARM64.ActiveCfg = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|ARM64.Build.0 = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|iPhone.ActiveCfg = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|iPhone.Build.0 = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|x64.ActiveCfg = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|x64.Build.0 = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|x86.ActiveCfg = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|x86.Build.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|ARM.ActiveCfg = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|ARM.Build.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|ARM.Deploy.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|ARM64.Build.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|ARM64.Deploy.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|iPhone.Build.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|iPhone.Deploy.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|x64.ActiveCfg = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|x64.Build.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|x64.Deploy.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|x86.ActiveCfg = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|x86.Build.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|x86.Deploy.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|Any CPU.Build.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|Any CPU.Deploy.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|ARM.ActiveCfg = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|ARM.Build.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|ARM.Deploy.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|ARM64.ActiveCfg = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|ARM64.Build.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|ARM64.Deploy.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|iPhone.ActiveCfg = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|iPhone.Build.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|iPhone.Deploy.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|x64.ActiveCfg = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|x64.Build.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|x64.Deploy.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|x86.ActiveCfg = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|x86.Build.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|x86.Deploy.0 = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|ARM.ActiveCfg = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|ARM.Build.0 = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|ARM64.Build.0 = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|iPhone.Build.0 = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|x64.ActiveCfg = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|x64.Build.0 = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|x86.ActiveCfg = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|x86.Build.0 = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|Any CPU.Build.0 = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|ARM.ActiveCfg = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|ARM.Build.0 = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|ARM64.ActiveCfg = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|ARM64.Build.0 = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|iPhone.ActiveCfg = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|iPhone.Build.0 = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|x64.ActiveCfg = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|x64.Build.0 = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|x86.ActiveCfg = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|x86.Build.0 = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|Any CPU.Build.0 = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|ARM.ActiveCfg = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|ARM.Build.0 = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|ARM64.Build.0 = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|x64.ActiveCfg = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|x64.Build.0 = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|x86.ActiveCfg = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|x86.Build.0 = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|Any CPU.ActiveCfg = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|Any CPU.Build.0 = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|ARM.ActiveCfg = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|ARM.Build.0 = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|ARM64.ActiveCfg = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|ARM64.Build.0 = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|iPhone.ActiveCfg = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|x64.ActiveCfg = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|x64.Build.0 = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|x86.ActiveCfg = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|x86.Build.0 = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|ARM.ActiveCfg = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|ARM.Build.0 = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|ARM64.Build.0 = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|iPhone.Build.0 = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|x64.ActiveCfg = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|x64.Build.0 = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|x86.ActiveCfg = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|x86.Build.0 = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|Any CPU.Build.0 = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|ARM.ActiveCfg = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|ARM.Build.0 = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|ARM64.ActiveCfg = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|ARM64.Build.0 = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|iPhone.ActiveCfg = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|iPhone.Build.0 = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|x64.ActiveCfg = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|x64.Build.0 = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|x86.ActiveCfg = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|x86.Build.0 = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|ARM.ActiveCfg = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|ARM.Build.0 = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|ARM64.Build.0 = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|x64.ActiveCfg = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|x64.Build.0 = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|x86.ActiveCfg = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|x86.Build.0 = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|Any CPU.Build.0 = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|ARM.ActiveCfg = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|ARM.Build.0 = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|ARM64.ActiveCfg = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|ARM64.Build.0 = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|iPhone.ActiveCfg = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|x64.ActiveCfg = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|x64.Build.0 = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|x86.ActiveCfg = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|x86.Build.0 = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|ARM.ActiveCfg = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|ARM.Build.0 = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|ARM64.Build.0 = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|iPhone.Build.0 = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|x64.ActiveCfg = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|x64.Build.0 = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|x86.ActiveCfg = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|x86.Build.0 = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|Any CPU.Build.0 = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|ARM.ActiveCfg = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|ARM.Build.0 = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|ARM64.ActiveCfg = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|ARM64.Build.0 = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|iPhone.ActiveCfg = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|iPhone.Build.0 = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|x64.ActiveCfg = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|x64.Build.0 = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|x86.ActiveCfg = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|x86.Build.0 = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|ARM.ActiveCfg = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|ARM.Build.0 = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|ARM64.Build.0 = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|iPhone.Build.0 = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|x64.ActiveCfg = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|x64.Build.0 = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|x86.ActiveCfg = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|x86.Build.0 = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|Any CPU.Build.0 = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|ARM.ActiveCfg = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|ARM.Build.0 = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|ARM64.ActiveCfg = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|ARM64.Build.0 = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|iPhone.ActiveCfg = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|iPhone.Build.0 = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|x64.ActiveCfg = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|x64.Build.0 = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|x86.ActiveCfg = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|x86.Build.0 = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|ARM.ActiveCfg = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|ARM.Build.0 = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|ARM64.Build.0 = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|iPhone.Build.0 = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|x64.ActiveCfg = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|x64.Build.0 = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|x86.ActiveCfg = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|x86.Build.0 = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|Any CPU.Build.0 = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|ARM.ActiveCfg = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|ARM.Build.0 = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|ARM64.ActiveCfg = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|ARM64.Build.0 = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|iPhone.ActiveCfg = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|iPhone.Build.0 = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|x64.ActiveCfg = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|x64.Build.0 = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|x86.ActiveCfg = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|x86.Build.0 = Release|Any CPU
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|ARM.ActiveCfg = Debug|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|ARM64.ActiveCfg = Debug|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|iPhone.ActiveCfg = Debug|iPhone
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|iPhone.Build.0 = Debug|iPhone
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|iPhone.Deploy.0 = Debug|iPhone
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|x64.ActiveCfg = Debug|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|x86.ActiveCfg = Debug|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|ARM.ActiveCfg = Release|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|ARM64.ActiveCfg = Release|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|iPhone.ActiveCfg = Release|iPhone
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|iPhone.Build.0 = Release|iPhone
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|x64.ActiveCfg = Release|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|x86.ActiveCfg = Release|iPhoneSimulator
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|ARM.ActiveCfg = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|ARM.Build.0 = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|ARM64.Build.0 = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|iPhone.Build.0 = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|x64.ActiveCfg = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|x64.Build.0 = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|x86.ActiveCfg = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|x86.Build.0 = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|Any CPU.Build.0 = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|ARM.ActiveCfg = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|ARM.Build.0 = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|ARM64.ActiveCfg = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|ARM64.Build.0 = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|iPhone.ActiveCfg = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|iPhone.Build.0 = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|x64.ActiveCfg = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|x64.Build.0 = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|x86.ActiveCfg = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|x86.Build.0 = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|Any CPU.Build.0 = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|ARM.ActiveCfg = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|ARM.Build.0 = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|ARM64.Build.0 = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|iPhone.Build.0 = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|x64.ActiveCfg = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|x64.Build.0 = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|x86.ActiveCfg = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|x86.Build.0 = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|Any CPU.ActiveCfg = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|Any CPU.Build.0 = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|ARM.ActiveCfg = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|ARM.Build.0 = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|ARM64.ActiveCfg = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|ARM64.Build.0 = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|iPhone.ActiveCfg = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|iPhone.Build.0 = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|x64.ActiveCfg = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|x64.Build.0 = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|x86.ActiveCfg = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|x86.Build.0 = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|ARM.ActiveCfg = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|ARM.Build.0 = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|ARM64.Build.0 = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|iPhone.Build.0 = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|x64.ActiveCfg = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|x64.Build.0 = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|x86.ActiveCfg = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|x86.Build.0 = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|Any CPU.Build.0 = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|ARM.ActiveCfg = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|ARM.Build.0 = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|ARM64.ActiveCfg = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|ARM64.Build.0 = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|iPhone.ActiveCfg = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|iPhone.Build.0 = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|x64.ActiveCfg = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|x64.Build.0 = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|x86.ActiveCfg = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|x86.Build.0 = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|ARM.ActiveCfg = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|ARM.Build.0 = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|ARM64.Build.0 = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|iPhone.Build.0 = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|x64.ActiveCfg = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|x64.Build.0 = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|x86.ActiveCfg = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|x86.Build.0 = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|Any CPU.Build.0 = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|ARM.ActiveCfg = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|ARM.Build.0 = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|ARM64.ActiveCfg = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|ARM64.Build.0 = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|iPhone.ActiveCfg = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|iPhone.Build.0 = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|x64.ActiveCfg = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|x64.Build.0 = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|x86.ActiveCfg = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|x86.Build.0 = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|ARM.ActiveCfg = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|ARM.Build.0 = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|ARM64.Build.0 = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|iPhone.Build.0 = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|x64.ActiveCfg = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|x64.Build.0 = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|x86.ActiveCfg = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|x86.Build.0 = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|Any CPU.Build.0 = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|ARM.ActiveCfg = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|ARM.Build.0 = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|ARM64.ActiveCfg = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|ARM64.Build.0 = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|iPhone.ActiveCfg = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|iPhone.Build.0 = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|x64.ActiveCfg = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|x64.Build.0 = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|x86.ActiveCfg = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|x86.Build.0 = Release|Any CPU
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|Any CPU.ActiveCfg = Debug|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|ARM.ActiveCfg = Debug|ARM
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|ARM.Build.0 = Debug|ARM
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|ARM.Deploy.0 = Debug|ARM
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|ARM64.ActiveCfg = Debug|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|iPhone.ActiveCfg = Debug|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|x64.ActiveCfg = Debug|x64
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|x64.Build.0 = Debug|x64
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|x64.Deploy.0 = Debug|x64
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|x86.ActiveCfg = Debug|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|x86.Build.0 = Debug|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|x86.Deploy.0 = Debug|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|Any CPU.ActiveCfg = Release|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|ARM.ActiveCfg = Release|ARM
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|ARM.Build.0 = Release|ARM
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|ARM.Deploy.0 = Release|ARM
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|ARM64.ActiveCfg = Release|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|iPhone.ActiveCfg = Release|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|iPhoneSimulator.ActiveCfg = Release|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|x64.ActiveCfg = Release|x64
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|x64.Build.0 = Release|x64
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|x64.Deploy.0 = Release|x64
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|x86.ActiveCfg = Release|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|x86.Build.0 = Release|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|x86.Deploy.0 = Release|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|Any CPU.ActiveCfg = Debug|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|ARM.ActiveCfg = Debug|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|ARM64.ActiveCfg = Debug|arm64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|ARM64.Build.0 = Debug|arm64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|ARM64.Deploy.0 = Debug|arm64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|iPhone.ActiveCfg = Debug|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|x64.ActiveCfg = Debug|x64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|x64.Build.0 = Debug|x64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|x64.Deploy.0 = Debug|x64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|x86.ActiveCfg = Debug|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|x86.Build.0 = Debug|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|x86.Deploy.0 = Debug|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|Any CPU.ActiveCfg = Release|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|ARM.ActiveCfg = Release|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|ARM64.ActiveCfg = Release|arm64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|ARM64.Build.0 = Release|arm64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|ARM64.Deploy.0 = Release|arm64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|iPhone.ActiveCfg = Release|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|iPhoneSimulator.ActiveCfg = Release|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|x64.ActiveCfg = Release|x64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|x64.Build.0 = Release|x64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|x64.Deploy.0 = Release|x64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|x86.ActiveCfg = Release|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|x86.Build.0 = Release|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|x86.Deploy.0 = Release|x86
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|ARM.ActiveCfg = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|ARM.Build.0 = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|ARM64.Build.0 = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|iPhone.Build.0 = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|x64.ActiveCfg = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|x64.Build.0 = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|x86.ActiveCfg = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|x86.Build.0 = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|Any CPU.Build.0 = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|ARM.ActiveCfg = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|ARM.Build.0 = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|ARM64.ActiveCfg = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|ARM64.Build.0 = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|iPhone.ActiveCfg = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|iPhone.Build.0 = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|x64.ActiveCfg = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|x64.Build.0 = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|x86.ActiveCfg = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{9AD757F5-E57A-459D-A0A7-E0675E045B84} = {97FA536A-675D-41C7-A90E-97E2F79D1AE2}
{29AC50BF-B4FB-450B-9386-0C5AD4B84226} = {97FA536A-675D-41C7-A90E-97E2F79D1AE2}
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A} = {B5E27729-44E8-4BE6-A62E-45FF27449B8F}
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC} = {D5B986A3-7FC9-437E-8030-349AA4698DFD}
{423C21C8-84CB-4A3C-BEB9-1C23D752D90F} = {31721EFD-3238-462B-B501-41F3D2B50E92}
{2ACC7FFA-238F-44FD-93CB-4D9B17D8C4BA} = {31721EFD-3238-462B-B501-41F3D2B50E92}
{29913989-0F70-48D8-8EDE-B1DD217F21D1} = {423C21C8-84CB-4A3C-BEB9-1C23D752D90F}
{3B72465B-ACAE-43AE-9327-10F372FE5F80} = {B5E27729-44E8-4BE6-A62E-45FF27449B8F}
{271193C1-6E7C-429C-A36D-3F1BE5267231} = {B5E27729-44E8-4BE6-A62E-45FF27449B8F}
{D5B986A3-7FC9-437E-8030-349AA4698DFD} = {9AD757F5-E57A-459D-A0A7-E0675E045B84}
{75A2CD30-BB85-4CA6-AC95-86A8A538A690} = {9AD757F5-E57A-459D-A0A7-E0675E045B84}
{00259593-A283-47A5-ACB7-9C3819B16364} = {75A2CD30-BB85-4CA6-AC95-86A8A538A690}
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27} = {E7F90170-B71B-4730-A082-1DF4E4F04420}
{F137FAC5-3385-4B19-988B-4A14ED84CCC6} = {8A70C15D-86D3-4086-A8C5-E17B299EA970}
{C328C538-B69F-43D2-80EE-3C1EB8254CBA} = {E7F90170-B71B-4730-A082-1DF4E4F04420}
{7A753001-1C3D-404D-A421-2E052A545EAC} = {2ACC7FFA-238F-44FD-93CB-4D9B17D8C4BA}
{0F0DB9CC-EA65-429C-9363-38624BF8F49C} = {52963C98-6AD9-4B57-924F-BE58DC36D746}
{7AD93806-111D-4FDC-B48D-9566765185FF} = {52963C98-6AD9-4B57-924F-BE58DC36D746}
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E} = {52963C98-6AD9-4B57-924F-BE58DC36D746}
{8A70C15D-86D3-4086-A8C5-E17B299EA970} = {97FA536A-675D-41C7-A90E-97E2F79D1AE2}
{1D11EC11-4734-47D4-9B62-4D03CFF67090} = {8A70C15D-86D3-4086-A8C5-E17B299EA970}
{E7F90170-B71B-4730-A082-1DF4E4F04420} = {97FA536A-675D-41C7-A90E-97E2F79D1AE2}
{65BC4888-CC59-428A-9B75-540CF1C09480} = {E7F90170-B71B-4730-A082-1DF4E4F04420}
{5997F786-4526-4A4B-BFC6-3832091D6544} = {E7F90170-B71B-4730-A082-1DF4E4F04420}
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF} = {D5B986A3-7FC9-437E-8030-349AA4698DFD}
{10553575-8E27-4E2C-9E88-90B015E80F1C} = {B5E27729-44E8-4BE6-A62E-45FF27449B8F}
{2964F669-7CD9-4D78-B4D9-804A965D58C0} = {75A2CD30-BB85-4CA6-AC95-86A8A538A690}
{B5E27729-44E8-4BE6-A62E-45FF27449B8F} = {29AC50BF-B4FB-450B-9386-0C5AD4B84226}
{5CE892DB-8CA2-42E4-8130-2836D28AD8DB} = {29AC50BF-B4FB-450B-9386-0C5AD4B84226}
{A4C57790-71D1-467C-A69E-2BD84CB6666C} = {5CE892DB-8CA2-42E4-8130-2836D28AD8DB}
{C7131F14-274F-4B55-ACA9-E81731AD012F} = {52963C98-6AD9-4B57-924F-BE58DC36D746}
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE} = {5CE892DB-8CA2-42E4-8130-2836D28AD8DB}
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491} = {8A70C15D-86D3-4086-A8C5-E17B299EA970}
{52963C98-6AD9-4B57-924F-BE58DC36D746} = {F07FDC58-64A0-42DA-8556-09742721F15E}
{FFCE9E2C-327C-46E7-8AC1-18CB2E982C2E} = {F07FDC58-64A0-42DA-8556-09742721F15E}
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB} = {FFCE9E2C-327C-46E7-8AC1-18CB2E982C2E}
{E175485B-3C8C-47D7-8DD5-F7FED627EB25} = {FFCE9E2C-327C-46E7-8AC1-18CB2E982C2E}
{A34EBE01-25BF-4E69-A2DC-2288DC625541} = {FFCE9E2C-327C-46E7-8AC1-18CB2E982C2E}
{DD10263D-D580-4241-9E21-EB5DE0FC83C3} = {B5E27729-44E8-4BE6-A62E-45FF27449B8F}
{AC257966-9368-478A-9DF4-F0D28E320FE3} = {52963C98-6AD9-4B57-924F-BE58DC36D746}
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6} = {52963C98-6AD9-4B57-924F-BE58DC36D746}
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D} = {5CE892DB-8CA2-42E4-8130-2836D28AD8DB}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {650AE971-2F29-46A8-822C-FB4FCDC6A9A0}
EndGlobalSection
EndGlobal

Просмотреть файл

@ -1,8 +1,7 @@
<Project>
<PropertyGroup>
<__XFBuildTasksLocation>$(_XFBuildTasksLocation)</__XFBuildTasksLocation>
<__XFBuildTasksLocation Condition="'$(__XFBuildTasksLocation)' == '' AND '$(MSBuildRuntimeType)' == 'Core'">$(MSBuildThisFileDirectory).nuspec\netstandard2.0\</__XFBuildTasksLocation>
<__XFBuildTasksLocation Condition="'$(__XFBuildTasksLocation)' == ''">$(MSBuildThisFileDirectory).nuspec\net462\</__XFBuildTasksLocation>
<_MauiBuildTasksLocation>$(_MauiBuildTasksLocation)</_MauiBuildTasksLocation>
<_MauiBuildTasksLocation Condition="'$(_MauiBuildTasksLocation)' == ''">$(MSBuildThisFileDirectory).nuspec\</_MauiBuildTasksLocation>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<DebugType>portable</DebugType>
<PublishRepositoryUrl>true</PublishRepositoryUrl>
@ -10,15 +9,27 @@
<IncludeSymbols>true</IncludeSymbols>
<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
<Company>Microsoft</Company>
<Product>Xamarin.Forms</Product>
<Product>Microsoft MAUI</Product>
<ProduceReferenceAssembly Condition="'$(UsingMicrosoftNETSdk)' == 'True' AND '$(Configuration)' == 'Debug'">True</ProduceReferenceAssembly>
</PropertyGroup>
<PropertyGroup>
<GitDefaultBranch>main</GitDefaultBranch>
</PropertyGroup>
<Import Condition="'$(SampleProject)' != 'True'" Project="$(MSBuildThisFileDirectory)eng\SourceLink.Build.props" />
<PropertyGroup>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<Authors>Microsoft</Authors>
<Owners>microsoft</Owners>
<NeutralLanguage>en</NeutralLanguage>
<RepositoryUrl>https://github.com/dotnet/maui.git</RepositoryUrl>
<ProjectUrl>https://github.com/dotnet/maui</ProjectUrl>
<PackageRequireLicenseAcceptance>True</PackageRequireLicenseAcceptance>
<Copyright>© Microsoft Corporation. All rights reserved.</Copyright>
<PackageVersion>0.0.1-alpha1</PackageVersion>
<PackageOutputPath>$(MSBuildThisFileDirectory)artifacts</PackageOutputPath>
</PropertyGroup>
<!-- This target is replaced by GitInfo when restored. Allows Version.targets to rely on it before restore. -->
<Target Name="GitVersion" />
<Target Name="GitInfo" />
<Import Condition="'$(EnvironmentBuildPropsImported)' != 'True'" Project="$(MSBuildThisFileDirectory)eng\Environment.Build.props" />
<Import Condition="'$(SampleProject)' != 'True' and '$(CI)' == 'true'" Project="$(MSBuildThisFileDirectory)eng\SourceLink.Build.props" />
</Project>

Просмотреть файл

@ -1,4 +1,6 @@
<Project>
<Import Condition="'$(SampleProject)' != 'true'" Project="eng\Git.Build.targets" />
<Import Condition="'$(SampleProject)' != 'true'" Project="eng\Version.targets" />
</Project>
<Import Condition="'$(SampleProject)' != 'true' and '$(CI)' == 'true'" Project="eng\Git.Build.targets" />
<Import Condition="'$(SampleProject)' != 'true' and '$(CI)' == 'true' " Project="eng\Version.targets" />
<Import Project="eng\AndroidX.targets" />
<Import Project="eng\Microsoft.Extensions.targets" />
</Project>

Просмотреть файл

@ -1 +1 @@
5.0.1
6.0.100-preview.2

Просмотреть файл

@ -1,68 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30926.220
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Platform.Handlers-net6", "src\Platform.Handlers\src\Xamarin.Platform.Handlers\Xamarin.Platform.Handlers-net6.csproj", "{95BA42B5-B00E-4986-B9B5-517140378452}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sample-net6", "src\Platform.Handlers\samples\Sample\Sample-net6.csproj", "{31D405F0-723E-4A6C-A52B-F4CB19A8D845}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Files", "Files", "{449F6071-A74F-4309-8D7B-7038CFD1B17B}"
ProjectSection(SolutionItems) = preProject
README.md = README.md
.nuspec\Xamarin.Forms.MultiTargeting.targets = .nuspec\Xamarin.Forms.MultiTargeting.targets
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.Core-net6", "src\Forms\src\Xamarin.Forms.Core\Xamarin.Forms.Core-net6.csproj", "{AF64451F-E2BD-41C2-B083-F60C26AE2A9F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sample.Droid-net6", "src\Platform.Handlers\samples\Sample.Droid\Sample.Droid-net6.csproj", "{3AE5B968-1916-4213-97E4-F88F51BCAB23}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sample.iOS-net6", "src\Platform.Handlers\samples\Sample.iOS\Sample.iOS-net6.csproj", "{B8D80A2B-F636-4E27-BCAA-EA601007B7F4}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Maui.Controls.Compatibility-net6", "src\Platform.Renderers\src\Maui.Controls.Compatibility\Maui.Controls.Compatibility-net6.csproj", "{00A11C2F-969F-4964-8557-91ADF4B1523D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.Platform.Android.FormsViewGroup-net6", "src\Platform.Renderers\src\Xamarin.Forms.Platform.Android.FormsViewGroup\Xamarin.Forms.Platform.Android.FormsViewGroup-net6.csproj", "{EB956381-F3E6-437C-9069-36B8BF5C6E2F}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{95BA42B5-B00E-4986-B9B5-517140378452}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{95BA42B5-B00E-4986-B9B5-517140378452}.Debug|Any CPU.Build.0 = Debug|Any CPU
{95BA42B5-B00E-4986-B9B5-517140378452}.Release|Any CPU.ActiveCfg = Release|Any CPU
{95BA42B5-B00E-4986-B9B5-517140378452}.Release|Any CPU.Build.0 = Release|Any CPU
{31D405F0-723E-4A6C-A52B-F4CB19A8D845}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{31D405F0-723E-4A6C-A52B-F4CB19A8D845}.Debug|Any CPU.Build.0 = Debug|Any CPU
{31D405F0-723E-4A6C-A52B-F4CB19A8D845}.Release|Any CPU.ActiveCfg = Release|Any CPU
{31D405F0-723E-4A6C-A52B-F4CB19A8D845}.Release|Any CPU.Build.0 = Release|Any CPU
{AF64451F-E2BD-41C2-B083-F60C26AE2A9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AF64451F-E2BD-41C2-B083-F60C26AE2A9F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AF64451F-E2BD-41C2-B083-F60C26AE2A9F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AF64451F-E2BD-41C2-B083-F60C26AE2A9F}.Release|Any CPU.Build.0 = Release|Any CPU
{3AE5B968-1916-4213-97E4-F88F51BCAB23}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3AE5B968-1916-4213-97E4-F88F51BCAB23}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3AE5B968-1916-4213-97E4-F88F51BCAB23}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{3AE5B968-1916-4213-97E4-F88F51BCAB23}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3AE5B968-1916-4213-97E4-F88F51BCAB23}.Release|Any CPU.Build.0 = Release|Any CPU
{B8D80A2B-F636-4E27-BCAA-EA601007B7F4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B8D80A2B-F636-4E27-BCAA-EA601007B7F4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B8D80A2B-F636-4E27-BCAA-EA601007B7F4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B8D80A2B-F636-4E27-BCAA-EA601007B7F4}.Release|Any CPU.Build.0 = Release|Any CPU
{00A11C2F-969F-4964-8557-91ADF4B1523D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{00A11C2F-969F-4964-8557-91ADF4B1523D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{00A11C2F-969F-4964-8557-91ADF4B1523D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{00A11C2F-969F-4964-8557-91ADF4B1523D}.Release|Any CPU.Build.0 = Release|Any CPU
{EB956381-F3E6-437C-9069-36B8BF5C6E2F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EB956381-F3E6-437C-9069-36B8BF5C6E2F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EB956381-F3E6-437C-9069-36B8BF5C6E2F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EB956381-F3E6-437C-9069-36B8BF5C6E2F}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {0B8ABEAD-D2B5-4370-A187-62B5ABE4EE50}
EndGlobalSection
EndGlobal

129
Microsoft.Maui-net6.sln Normal file
Просмотреть файл

@ -0,0 +1,129 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30926.220
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Core-net6", "src\Core\src\Core-net6.csproj", "{95BA42B5-B00E-4986-B9B5-517140378452}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Files", "Files", "{449F6071-A74F-4309-8D7B-7038CFD1B17B}"
ProjectSection(SolutionItems) = preProject
.nuspec\Microsoft.Maui.Controls.MultiTargeting.targets = .nuspec\Microsoft.Maui.Controls.MultiTargeting.targets
README.md = README.md
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Controls.Core-net6", "src\Controls\src\Core\Controls.Core-net6.csproj", "{AF64451F-E2BD-41C2-B083-F60C26AE2A9F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Compatibility-net6", "src\Compatibility\Core\src\Compatibility-net6.csproj", "{00A11C2F-969F-4964-8557-91ADF4B1523D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Compatibility.Android.FormsViewGroup-net6", "src\Compatibility\Core\src\Android.FormsViewGroup\Compatibility.Android.FormsViewGroup-net6.csproj", "{EB956381-F3E6-437C-9069-36B8BF5C6E2F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Controls", "Controls", "{459BF674-83CB-46F6-881F-A2D2117DBF4D}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{E1082E26-D700-4127-9329-66D673FD2D55}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Maui.Controls.Sample-net6", "src\Controls\samples\Controls.Sample\Maui.Controls.Sample-net6.csproj", "{B8DC1324-977C-46F1-B697-9064ADE6099A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Maui.Controls.Sample.Droid-net6", "src\Controls\samples\Controls.Sample.Droid\Maui.Controls.Sample.Droid-net6.csproj", "{BE50FAEF-4096-48B5-B9CE-EE0C38F15A18}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Maui.Controls.Sample.iOS-net6", "src\Controls\samples\Controls.Sample.iOS\Maui.Controls.Sample.iOS-net6.csproj", "{1C3439E6-73D7-4F8E-A64A-5448F5CB18DE}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Maui.Controls.Sample.SingleProject", "src\Controls\samples\Controls.Sample.SingleProject\Maui.Controls.Sample.SingleProject.csproj", "{CB495F62-CFE6-4975-AED8-F26B6C5D0113}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Compatibility", "Compatibility", "{123AA89E-1638-4E0E-B828-B8F9F9F906A2}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Core", "Core", "{09C264E9-E3F3-4586-9151-DCBB1F6DA7AB}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Controls.Build.Tasks-net6", "src\Controls\src\Build.Tasks\Controls.Build.Tasks-net6.csproj", "{75C380E0-CE53-4C01-B89F-CF685331DE18}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Essentials", "Essentials", "{94F3C036-A5F4-4ACC-A028-8506802ADB88}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Essentials-net6", "src\Essentials\src\Essentials-net6.csproj", "{39B47A3C-21CA-4B28-9250-14FD957EB0FC}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SingleProject", "SingleProject", "{D5478E0A-5D9C-4C1F-980C-7A9FC71F925E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Resizetizer", "src\SingleProject\Resizetizer\src\Resizetizer.csproj", "{9909F93F-C085-4F76-B92A-5D8C516BF47D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Package-net6", "src\Package\Package-net6.csproj", "{5BEB3326-79B4-438C-BF65-274202F387EC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Controls.Xaml-net6", "src\Controls\src\Xaml\Controls.Xaml-net6.csproj", "{CC3D4667-D94E-4276-9311-6439BFD075E4}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{95BA42B5-B00E-4986-B9B5-517140378452}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{95BA42B5-B00E-4986-B9B5-517140378452}.Debug|Any CPU.Build.0 = Debug|Any CPU
{95BA42B5-B00E-4986-B9B5-517140378452}.Release|Any CPU.ActiveCfg = Release|Any CPU
{95BA42B5-B00E-4986-B9B5-517140378452}.Release|Any CPU.Build.0 = Release|Any CPU
{AF64451F-E2BD-41C2-B083-F60C26AE2A9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AF64451F-E2BD-41C2-B083-F60C26AE2A9F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AF64451F-E2BD-41C2-B083-F60C26AE2A9F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AF64451F-E2BD-41C2-B083-F60C26AE2A9F}.Release|Any CPU.Build.0 = Release|Any CPU
{00A11C2F-969F-4964-8557-91ADF4B1523D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{00A11C2F-969F-4964-8557-91ADF4B1523D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{00A11C2F-969F-4964-8557-91ADF4B1523D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{00A11C2F-969F-4964-8557-91ADF4B1523D}.Release|Any CPU.Build.0 = Release|Any CPU
{EB956381-F3E6-437C-9069-36B8BF5C6E2F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EB956381-F3E6-437C-9069-36B8BF5C6E2F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EB956381-F3E6-437C-9069-36B8BF5C6E2F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EB956381-F3E6-437C-9069-36B8BF5C6E2F}.Release|Any CPU.Build.0 = Release|Any CPU
{B8DC1324-977C-46F1-B697-9064ADE6099A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B8DC1324-977C-46F1-B697-9064ADE6099A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B8DC1324-977C-46F1-B697-9064ADE6099A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B8DC1324-977C-46F1-B697-9064ADE6099A}.Release|Any CPU.Build.0 = Release|Any CPU
{BE50FAEF-4096-48B5-B9CE-EE0C38F15A18}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BE50FAEF-4096-48B5-B9CE-EE0C38F15A18}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BE50FAEF-4096-48B5-B9CE-EE0C38F15A18}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{BE50FAEF-4096-48B5-B9CE-EE0C38F15A18}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BE50FAEF-4096-48B5-B9CE-EE0C38F15A18}.Release|Any CPU.Build.0 = Release|Any CPU
{1C3439E6-73D7-4F8E-A64A-5448F5CB18DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1C3439E6-73D7-4F8E-A64A-5448F5CB18DE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1C3439E6-73D7-4F8E-A64A-5448F5CB18DE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1C3439E6-73D7-4F8E-A64A-5448F5CB18DE}.Release|Any CPU.Build.0 = Release|Any CPU
{CB495F62-CFE6-4975-AED8-F26B6C5D0113}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CB495F62-CFE6-4975-AED8-F26B6C5D0113}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CB495F62-CFE6-4975-AED8-F26B6C5D0113}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CB495F62-CFE6-4975-AED8-F26B6C5D0113}.Release|Any CPU.Build.0 = Release|Any CPU
{75C380E0-CE53-4C01-B89F-CF685331DE18}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{75C380E0-CE53-4C01-B89F-CF685331DE18}.Debug|Any CPU.Build.0 = Debug|Any CPU
{75C380E0-CE53-4C01-B89F-CF685331DE18}.Release|Any CPU.ActiveCfg = Release|Any CPU
{75C380E0-CE53-4C01-B89F-CF685331DE18}.Release|Any CPU.Build.0 = Release|Any CPU
{39B47A3C-21CA-4B28-9250-14FD957EB0FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{39B47A3C-21CA-4B28-9250-14FD957EB0FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{39B47A3C-21CA-4B28-9250-14FD957EB0FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{39B47A3C-21CA-4B28-9250-14FD957EB0FC}.Release|Any CPU.Build.0 = Release|Any CPU
{9909F93F-C085-4F76-B92A-5D8C516BF47D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9909F93F-C085-4F76-B92A-5D8C516BF47D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9909F93F-C085-4F76-B92A-5D8C516BF47D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9909F93F-C085-4F76-B92A-5D8C516BF47D}.Release|Any CPU.Build.0 = Release|Any CPU
{5BEB3326-79B4-438C-BF65-274202F387EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5BEB3326-79B4-438C-BF65-274202F387EC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5BEB3326-79B4-438C-BF65-274202F387EC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5BEB3326-79B4-438C-BF65-274202F387EC}.Release|Any CPU.Build.0 = Release|Any CPU
{CC3D4667-D94E-4276-9311-6439BFD075E4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CC3D4667-D94E-4276-9311-6439BFD075E4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CC3D4667-D94E-4276-9311-6439BFD075E4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CC3D4667-D94E-4276-9311-6439BFD075E4}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{95BA42B5-B00E-4986-B9B5-517140378452} = {09C264E9-E3F3-4586-9151-DCBB1F6DA7AB}
{AF64451F-E2BD-41C2-B083-F60C26AE2A9F} = {459BF674-83CB-46F6-881F-A2D2117DBF4D}
{00A11C2F-969F-4964-8557-91ADF4B1523D} = {123AA89E-1638-4E0E-B828-B8F9F9F906A2}
{EB956381-F3E6-437C-9069-36B8BF5C6E2F} = {123AA89E-1638-4E0E-B828-B8F9F9F906A2}
{E1082E26-D700-4127-9329-66D673FD2D55} = {459BF674-83CB-46F6-881F-A2D2117DBF4D}
{B8DC1324-977C-46F1-B697-9064ADE6099A} = {E1082E26-D700-4127-9329-66D673FD2D55}
{BE50FAEF-4096-48B5-B9CE-EE0C38F15A18} = {E1082E26-D700-4127-9329-66D673FD2D55}
{1C3439E6-73D7-4F8E-A64A-5448F5CB18DE} = {E1082E26-D700-4127-9329-66D673FD2D55}
{CB495F62-CFE6-4975-AED8-F26B6C5D0113} = {E1082E26-D700-4127-9329-66D673FD2D55}
{75C380E0-CE53-4C01-B89F-CF685331DE18} = {459BF674-83CB-46F6-881F-A2D2117DBF4D}
{39B47A3C-21CA-4B28-9250-14FD957EB0FC} = {94F3C036-A5F4-4ACC-A028-8506802ADB88}
{9909F93F-C085-4F76-B92A-5D8C516BF47D} = {D5478E0A-5D9C-4C1F-980C-7A9FC71F925E}
{CC3D4667-D94E-4276-9311-6439BFD075E4} = {459BF674-83CB-46F6-881F-A2D2117DBF4D}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {0B8ABEAD-D2B5-4370-A187-62B5ABE4EE50}
EndGlobalSection
EndGlobal

1470
Microsoft.Maui.sln Normal file

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

13
NuGet.config Normal file
Просмотреть файл

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<add key="dotnet-eng" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json" protocolVersion="3" />
<add key="dotnet-public" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json" protocolVersion="3" />
<add key="dotnet6" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet6/nuget/v3/index.json" />
<add key="xamarin" value="https://pkgs.dev.azure.com/azure-public/vside/_packaging/xamarin-impl/nuget/v3/index.json" />
</packageSources>
<activePackageSource>
<add key="All" value="(Aggregate source)" />
</activePackageSource>
</configuration>

Просмотреть файл

@ -17,7 +17,6 @@
```
dotnet tool install Cake.Tool -g
dotnet cake --target=provision
```
### Running

Просмотреть файл

@ -1,435 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30503.244
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{7E12E071-51C0-4668-9FF3-E2DE9DC51962}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Essentials", "src\Essentials\src\Xamarin.Essentials\Xamarin.Essentials.csproj", "{8CB95D25-8442-42BC-82BE-319D21138549}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{99FDF6CA-DCF8-4CB2-B2EA-E24CCB601232}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Essentials.UnitTests", "src\Essentials\test\UnitTests\Xamarin.Essentials.UnitTests.csproj", "{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Essentials.DeviceTests.Android", "src\Essentials\test\DeviceTests.Android\Xamarin.Essentials.DeviceTests.Android.csproj", "{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Essentials.DeviceTests.iOS", "src\Essentials\test\DeviceTests.iOS\Xamarin.Essentials.DeviceTests.iOS.csproj", "{B73EB308-70BE-49FD-91A7-1D1495663D6D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Essentials.DeviceTests.Shared", "src\Essentials\test\DeviceTests.Shared\Xamarin.Essentials.DeviceTests.Shared.csproj", "{81128D28-CFC8-4EA4-B68D-9939339C461A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{5817A848-0B04-4035-9F7E-B8621B61CBDD}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Samples.UWP", "src\Essentials\samples\Samples.UWP\Samples.UWP.csproj", "{5A1D97F2-6703-4278-BBF2-12C065F7E94A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Tizen", "src\Essentials\samples\Samples.Tizen\Samples.Tizen.csproj", "{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Samples.Mac", "src\Essentials\samples\Samples.Mac\Samples.Mac.csproj", "{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Samples.iOS", "src\Essentials\samples\Samples.iOS\Samples.iOS.csproj", "{AB6242B7-634F-4839-A991-7629D0D2C636}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Samples.Android", "src\Essentials\samples\Samples.Android\Samples.Android.csproj", "{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples", "src\Essentials\samples\Samples\Samples.csproj", "{2C69EB76-02C4-4921-96A1-4D70CB7CE744}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sample.Server.WebAuthenticator", "src\Essentials\samples\Sample.Server.WebAuthenticator\Sample.Server.WebAuthenticator.csproj", "{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|ARM = Debug|ARM
Debug|ARM64 = Debug|ARM64
Debug|iPhone = Debug|iPhone
Debug|iPhoneSimulator = Debug|iPhoneSimulator
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|ARM = Release|ARM
Release|ARM64 = Release|ARM64
Release|iPhone = Release|iPhone
Release|iPhoneSimulator = Release|iPhoneSimulator
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|ARM.ActiveCfg = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|ARM.Build.0 = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|ARM64.Build.0 = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|iPhone.Build.0 = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|x64.ActiveCfg = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|x64.Build.0 = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|x86.ActiveCfg = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|x86.Build.0 = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|Any CPU.Build.0 = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|ARM.ActiveCfg = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|ARM.Build.0 = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|ARM64.ActiveCfg = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|ARM64.Build.0 = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|iPhone.ActiveCfg = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|iPhone.Build.0 = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|x64.ActiveCfg = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|x64.Build.0 = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|x86.ActiveCfg = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|x86.Build.0 = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|ARM.ActiveCfg = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|ARM.Build.0 = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|ARM64.Build.0 = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|iPhone.Build.0 = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|x64.ActiveCfg = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|x64.Build.0 = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|x86.ActiveCfg = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|x86.Build.0 = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|Any CPU.Build.0 = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|ARM.ActiveCfg = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|ARM.Build.0 = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|ARM64.ActiveCfg = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|ARM64.Build.0 = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|iPhone.ActiveCfg = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|iPhone.Build.0 = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|x64.ActiveCfg = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|x64.Build.0 = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|x86.ActiveCfg = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|x86.Build.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|ARM.ActiveCfg = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|ARM.Build.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|ARM.Deploy.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|ARM64.Build.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|ARM64.Deploy.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|iPhone.Build.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|iPhone.Deploy.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|x64.ActiveCfg = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|x64.Build.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|x64.Deploy.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|x86.ActiveCfg = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|x86.Build.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|x86.Deploy.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|Any CPU.Build.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|Any CPU.Deploy.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|ARM.ActiveCfg = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|ARM.Build.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|ARM.Deploy.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|ARM64.ActiveCfg = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|ARM64.Build.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|ARM64.Deploy.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|iPhone.ActiveCfg = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|iPhone.Build.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|iPhone.Deploy.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|x64.ActiveCfg = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|x64.Build.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|x64.Deploy.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|x86.ActiveCfg = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|x86.Build.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|x86.Deploy.0 = Release|Any CPU
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|ARM.ActiveCfg = Debug|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|ARM64.ActiveCfg = Debug|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|iPhone.ActiveCfg = Debug|iPhone
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|iPhone.Build.0 = Debug|iPhone
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|iPhone.Deploy.0 = Debug|iPhone
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|x64.ActiveCfg = Debug|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|x64.Build.0 = Debug|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|x64.Deploy.0 = Debug|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|x86.ActiveCfg = Debug|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Release|ARM.ActiveCfg = Release|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Release|ARM64.ActiveCfg = Release|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Release|iPhone.ActiveCfg = Release|iPhone
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Release|iPhone.Build.0 = Release|iPhone
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Release|x64.ActiveCfg = Release|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Release|x86.ActiveCfg = Release|iPhoneSimulator
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|ARM.ActiveCfg = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|ARM.Build.0 = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|ARM64.Build.0 = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|iPhone.Build.0 = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|x64.ActiveCfg = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|x64.Build.0 = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|x86.ActiveCfg = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|x86.Build.0 = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|Any CPU.Build.0 = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|ARM.ActiveCfg = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|ARM.Build.0 = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|ARM64.ActiveCfg = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|ARM64.Build.0 = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|iPhone.ActiveCfg = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|iPhone.Build.0 = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|x64.ActiveCfg = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|x64.Build.0 = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|x86.ActiveCfg = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|x86.Build.0 = Release|Any CPU
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|Any CPU.ActiveCfg = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|Any CPU.Build.0 = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|Any CPU.Deploy.0 = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|ARM.ActiveCfg = Debug|ARM
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|ARM.Build.0 = Debug|ARM
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|ARM.Deploy.0 = Debug|ARM
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|ARM64.ActiveCfg = Debug|ARM64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|ARM64.Build.0 = Debug|ARM64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|ARM64.Deploy.0 = Debug|ARM64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|iPhone.ActiveCfg = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|iPhone.Build.0 = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|iPhone.Deploy.0 = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|iPhoneSimulator.Build.0 = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|iPhoneSimulator.Deploy.0 = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|x64.ActiveCfg = Debug|x64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|x64.Build.0 = Debug|x64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|x64.Deploy.0 = Debug|x64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|x86.ActiveCfg = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|x86.Build.0 = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|x86.Deploy.0 = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|Any CPU.ActiveCfg = Release|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|ARM.ActiveCfg = Release|ARM
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|ARM.Build.0 = Release|ARM
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|ARM.Deploy.0 = Release|ARM
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|ARM64.ActiveCfg = Release|ARM64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|ARM64.Build.0 = Release|ARM64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|ARM64.Deploy.0 = Release|ARM64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|iPhone.ActiveCfg = Release|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|iPhoneSimulator.ActiveCfg = Release|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|x64.ActiveCfg = Release|x64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|x64.Build.0 = Release|x64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|x64.Deploy.0 = Release|x64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|x86.ActiveCfg = Release|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|x86.Build.0 = Release|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|x86.Deploy.0 = Release|x86
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|ARM.ActiveCfg = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|ARM.Build.0 = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|ARM64.Build.0 = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|iPhone.Build.0 = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|x64.ActiveCfg = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|x64.Build.0 = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|x86.ActiveCfg = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|x86.Build.0 = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|Any CPU.Build.0 = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|ARM.ActiveCfg = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|ARM.Build.0 = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|ARM64.ActiveCfg = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|ARM64.Build.0 = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|iPhone.ActiveCfg = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|iPhone.Build.0 = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|x64.ActiveCfg = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|x64.Build.0 = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|x86.ActiveCfg = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|x86.Build.0 = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|ARM.ActiveCfg = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|ARM.Build.0 = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|ARM64.Build.0 = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|iPhone.Build.0 = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|x64.ActiveCfg = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|x64.Build.0 = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|x86.ActiveCfg = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|x86.Build.0 = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|Any CPU.Build.0 = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|ARM.ActiveCfg = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|ARM.Build.0 = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|ARM64.ActiveCfg = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|ARM64.Build.0 = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|iPhone.ActiveCfg = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|iPhone.Build.0 = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|x64.ActiveCfg = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|x64.Build.0 = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|x86.ActiveCfg = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|x86.Build.0 = Release|Any CPU
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|ARM.ActiveCfg = Debug|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|ARM64.ActiveCfg = Debug|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|iPhone.ActiveCfg = Debug|iPhone
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|iPhone.Build.0 = Debug|iPhone
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|iPhone.Deploy.0 = Debug|iPhone
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|x64.ActiveCfg = Debug|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|x64.Build.0 = Debug|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|x64.Deploy.0 = Debug|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|x86.ActiveCfg = Debug|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Release|ARM.ActiveCfg = Release|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Release|ARM64.ActiveCfg = Release|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Release|iPhone.ActiveCfg = Release|iPhone
{AB6242B7-634F-4839-A991-7629D0D2C636}.Release|iPhone.Build.0 = Release|iPhone
{AB6242B7-634F-4839-A991-7629D0D2C636}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Release|x64.ActiveCfg = Release|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Release|x86.ActiveCfg = Release|iPhoneSimulator
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|ARM.ActiveCfg = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|ARM.Build.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|ARM.Deploy.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|ARM64.Build.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|ARM64.Deploy.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|iPhone.Build.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|iPhone.Deploy.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|x64.ActiveCfg = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|x64.Build.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|x64.Deploy.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|x86.ActiveCfg = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|x86.Build.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|x86.Deploy.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|Any CPU.Build.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|Any CPU.Deploy.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|ARM.ActiveCfg = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|ARM.Build.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|ARM.Deploy.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|ARM64.ActiveCfg = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|ARM64.Build.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|ARM64.Deploy.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|iPhone.ActiveCfg = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|iPhone.Build.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|iPhone.Deploy.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|x64.ActiveCfg = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|x64.Build.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|x64.Deploy.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|x86.ActiveCfg = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|x86.Build.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|x86.Deploy.0 = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|ARM.ActiveCfg = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|ARM.Build.0 = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|ARM64.Build.0 = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|iPhone.Build.0 = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|x64.ActiveCfg = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|x64.Build.0 = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|x86.ActiveCfg = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|x86.Build.0 = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|Any CPU.Build.0 = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|ARM.ActiveCfg = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|ARM.Build.0 = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|ARM64.ActiveCfg = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|ARM64.Build.0 = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|iPhone.ActiveCfg = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|iPhone.Build.0 = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|x64.ActiveCfg = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|x64.Build.0 = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|x86.ActiveCfg = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|x86.Build.0 = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|ARM.ActiveCfg = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|ARM.Build.0 = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|ARM64.Build.0 = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|iPhone.Build.0 = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|x64.ActiveCfg = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|x64.Build.0 = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|x86.ActiveCfg = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|x86.Build.0 = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|Any CPU.Build.0 = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|ARM.ActiveCfg = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|ARM.Build.0 = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|ARM64.ActiveCfg = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|ARM64.Build.0 = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|iPhone.ActiveCfg = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|iPhone.Build.0 = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|x64.ActiveCfg = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|x64.Build.0 = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|x86.ActiveCfg = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{8CB95D25-8442-42BC-82BE-319D21138549} = {7E12E071-51C0-4668-9FF3-E2DE9DC51962}
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886} = {99FDF6CA-DCF8-4CB2-B2EA-E24CCB601232}
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1} = {99FDF6CA-DCF8-4CB2-B2EA-E24CCB601232}
{B73EB308-70BE-49FD-91A7-1D1495663D6D} = {99FDF6CA-DCF8-4CB2-B2EA-E24CCB601232}
{81128D28-CFC8-4EA4-B68D-9939339C461A} = {99FDF6CA-DCF8-4CB2-B2EA-E24CCB601232}
{5A1D97F2-6703-4278-BBF2-12C065F7E94A} = {5817A848-0B04-4035-9F7E-B8621B61CBDD}
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348} = {5817A848-0B04-4035-9F7E-B8621B61CBDD}
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5} = {5817A848-0B04-4035-9F7E-B8621B61CBDD}
{AB6242B7-634F-4839-A991-7629D0D2C636} = {5817A848-0B04-4035-9F7E-B8621B61CBDD}
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C} = {5817A848-0B04-4035-9F7E-B8621B61CBDD}
{2C69EB76-02C4-4921-96A1-4D70CB7CE744} = {5817A848-0B04-4035-9F7E-B8621B61CBDD}
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C} = {5817A848-0B04-4035-9F7E-B8621B61CBDD}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {650AE971-2F29-46A8-822C-FB4FCDC6A9A0}
EndGlobalSection
EndGlobal

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -18,9 +18,6 @@ PowerShell:
//////////////////////////////////////////////////////////////////////
// ADDINS
//////////////////////////////////////////////////////////////////////
#addin "nuget:?package=Cake.Xamarin&version=3.0.2"
#addin "nuget:?package=Cake.Android.Adb&version=3.2.0"
#addin "nuget:?package=Cake.Git&version=0.21.0"
#addin "nuget:?package=Cake.Android.SdkManager&version=3.0.2"
#addin "nuget:?package=Cake.Boots&version=1.0.3.556"
#addin "nuget:?package=Cake.AppleSimulator&version=0.2.0"
@ -68,15 +65,19 @@ var ANDROID_CONTROLGALLERY_PROJ = $"{ANDROID_CONTROLGALLERY}Xamarin.Forms.Contro
var ANDROID_RENDERERS = Argument("ANDROID_RENDERERS", "FAST");
var ANDROID_TEST_PROJ = "./src/ControlGallery/test/Xamarin.Forms.Core.Android.UITests/Xamarin.Forms.Core.Android.UITests.csproj";
var BUILD_TASKS_PROJ ="src/Forms/src/Xamarin.Forms.Build.Tasks/Xamarin.Forms.Build.Tasks.csproj";
var BUILD_TASKS_PROJ ="src/Controls/src/Build.Tasks/Controls.Build.Tasks.csproj";
var XamarinFormsVersion = Argument("XamarinFormsVersion", "");
var packageVersion = Argument("packageVersion", "");
var packageVersion = GetBuildVariable("packageVersion", "0.1.0-p2");
var releaseChannelArg = Argument("CHANNEL", "Stable");
releaseChannelArg = EnvironmentVariable("CHANNEL") ?? releaseChannelArg;
var teamProject = Argument("TeamProject", "");
bool isHostedAgent = agentName.StartsWith("Azure Pipelines") || agentName.StartsWith("Hosted Agent");
var MAUI_SLN = "./Microsoft.Maui.sln";
var CONTROLGALLERY_SLN = "./ControlGallery.sln";
string defaultUnitTestWhere = "";
if(target.ToLower().Contains("uwp"))
@ -96,7 +97,21 @@ MSBuildArguments = $"{MSBuildArgumentsENV} {MSBuildArgumentsARGS}";
Information("MSBuildArguments: {0}", MSBuildArguments);
string androidSdks = EnvironmentVariable("ANDROID_API_SDKS", "platform-tools,platforms;android-26,platforms;android-27,platforms;android-28,platforms;android-29,build-tools;29.0.3,platforms;android-30,build-tools;30.0.2");
string androidEmulators = EnvironmentVariable("ANDROID_EMULATORS", "");
string androidSdks = EnvironmentVariable("ANDROID_API_SDKS",
// build/platform tools
"build-tools;29.0.3," +
"build-tools;30.0.2," +
"platform-tools," +
// apis
"platforms;android-26," +
"platforms;android-27," +
"platforms;android-28," +
"platforms;android-29," +
"platforms;android-30," +
// emulators
androidEmulators);
Information("ANDROID_API_SDKS: {0}", androidSdks);
string[] androidSdkManagerInstalls = androidSdks.Split(',');
@ -649,10 +664,17 @@ Task("provision")
.IsDependentOn("provision-monosdk"); // always provision monosdk last otherwise CI might fail
Task("NuGetPack")
.Description("Build and Create Nugets")
.IsDependentOn("Restore")
.IsDependentOn("BuildForNuget")
.IsDependentOn("_NuGetPack");
.Description("Build and Create Nugets").Does(()=> {
var settings = new DotNetCoreToolSettings
{
DiagnosticOutput = true,
ArgumentCustomization = args => args.Append($"./.nuspec/package.ps1 -configuration \"{configuration}\"")
};
DotNetCoreTool("pwsh", settings);
});;
Task("provision-powershell").Does(()=> {
var settings = new DotNetCoreToolSettings
@ -664,53 +686,12 @@ Task("provision-powershell").Does(()=> {
DotNetCoreTool("tool", settings);
});
Task("_NuGetPack")
.WithCriteria(IsRunningOnWindows())
.Description("Create Nugets without building anything")
.Does(() =>
{
var nugetversion = String.Empty;
if(!String.IsNullOrWhiteSpace(packageVersion))
{
nugetversion = packageVersion;
}
else
{
foreach(var nugetVersionFile in GetFiles("./**/.XamarinFormsVersionFile.txt"))
{
nugetversion = FileReadText(nugetVersionFile);
if(!nugetversion.StartsWith(".."))
break;
}
}
Information("Nuget Version: {0}", nugetversion);
var nugetPackageDir = Directory("./artifacts");
var nuGetPackSettings = new NuGetPackSettings
{
OutputDirectory = nugetPackageDir,
Version = nugetversion
};
var nugetFilePaths =
GetFiles("./.nuspec/Xamarin.Forms.nuspec");
// GetFiles("./.nuspec/*.nuspec");
nuGetPackSettings.Properties.Add("configuration", configuration);
nuGetPackSettings.Properties.Add("platform", "anycpu");
// nuGetPackSettings.Verbosity = NuGetVerbosity.Detailed;
NuGetPack(nugetFilePaths, nuGetPackSettings);
});
Task("Restore")
.Description("Restore target on Xamarin.Forms.sln")
.Description($"Restore target on {MAUI_SLN}")
.Does(() =>
{
try{
MSBuild("./Xamarin.Forms.sln", GetMSBuildSettings().WithTarget("restore"));
MSBuild(MAUI_SLN, GetMSBuildSettings().WithTarget("restore"));
}
catch{
// ignore restore errors that come from uwp
@ -745,8 +726,8 @@ Task("BuildForNuget")
};
msbuildSettings.BinaryLogger = binaryLogger;
binaryLogger.FileName = $"{artifactStagingDirectory}/Xamarin.Forms-{configuration}.binlog";
MSBuild("./Xamarin.Forms.sln", msbuildSettings.WithRestore());
binaryLogger.FileName = $"{artifactStagingDirectory}/Maui.Controls-{configuration}.binlog";
MSBuild(MAUI_SLN, msbuildSettings.WithRestore());
// // This currently fails on CI will revisit later
// if(isCIBuild)
@ -755,7 +736,7 @@ Task("BuildForNuget")
// MSBuild("./Xamarin.Forms.Xaml.UnitTests/Xamarin.Forms.Xaml.UnitTests.csproj", GetMSBuildSettings());
// }
// MSBuild("./Xamarin.Forms.sln", GetMSBuildSettings().WithTarget("Restore"));
// MSBuild(MAUI_SLN, GetMSBuildSettings().WithTarget("Restore"));
// MSBuild("./Xamarin.Forms.DualScreen.sln", GetMSBuildSettings().WithTarget("Restore"));
// if(isCIBuild)
@ -771,7 +752,7 @@ Task("BuildForNuget")
// }
// }
// MSBuild("./Xamarin.Forms.sln", GetMSBuildSettings().WithTarget("Restore"));
// MSBuild(MAUI_SLN, GetMSBuildSettings().WithTarget("Restore"));
// MSBuild("./Xamarin.Forms.DualScreen.sln", GetMSBuildSettings().WithTarget("Restore"));
// msbuildSettings.BinaryLogger = binaryLogger;
@ -810,13 +791,13 @@ Task("BuildForNuget")
// XAML Tests are currently having issues compiling in Release Mode
if(configuration == "Debug")
{
msbuildSettings = GetMSBuildSettings();
msbuildSettings.BinaryLogger = binaryLogger;
binaryLogger.FileName = $"{artifactStagingDirectory}/Xamarin.Forms.ControlGallery-{configuration}.binlog";
MSBuild("./Xamarin.Forms.ControlGallery.sln", msbuildSettings.WithRestore());
}
// if(configuration == "Debug")
// {
// msbuildSettings = GetMSBuildSettings();
// msbuildSettings.BinaryLogger = binaryLogger;
// binaryLogger.FileName = $"{artifactStagingDirectory}/ControlGallery-{configuration}.binlog";
// MSBuild(CONTROLGALLERY_SLN, msbuildSettings.WithRestore());
// }
if(IsRunningOnWindows())
{
@ -837,15 +818,15 @@ Task("BuildForNuget")
// .WithProperty("UwpMinTargetFrameworks", "uap10.0.14393")
// .WithRestore());
msbuildSettings = GetMSBuildSettings();
msbuildSettings.BinaryLogger = binaryLogger;
binaryLogger.FileName = $"{artifactStagingDirectory}/win-{configuration}-csproj.binlog";
MSBuild("./src/Platform.Renderers/src/Xamarin.Forms.Platform.UAP/Xamarin.Forms.Platform.UAP.csproj",
msbuildSettings
.WithRestore()
.WithTarget("rebuild")
.WithProperty("DisableEmbeddedXbf", "false")
.WithProperty("EnableTypeInfoReflection", "false"));
// msbuildSettings = GetMSBuildSettings();
// msbuildSettings.BinaryLogger = binaryLogger;
// binaryLogger.FileName = $"{artifactStagingDirectory}/win-{configuration}-csproj.binlog";
// MSBuild("./src/Compatibility/Core/src/UAP/Compatibility.UAP.csproj",
// msbuildSettings
// .WithRestore()
// .WithTarget("rebuild")
// .WithProperty("DisableEmbeddedXbf", "false")
// .WithProperty("EnableTypeInfoReflection", "false"));
// msbuildSettings = GetMSBuildSettings();
// msbuildSettings.BinaryLogger = binaryLogger;
@ -883,7 +864,7 @@ Task("Build")
.Does(() =>
{
try{
MSBuild("./Xamarin.Forms.sln", GetMSBuildSettings().WithRestore());
MSBuild(MAUI_SLN, GetMSBuildSettings().WithRestore());
}
catch(Exception)
{
@ -896,17 +877,65 @@ Task("Android100")
.Description("Builds Monodroid10.0 targets")
.Does(() =>
{
MSBuild("Xamarin.Forms.sln",
MSBuild(MAUI_SLN,
GetMSBuildSettings()
.WithRestore()
.WithProperty("AndroidTargetFrameworks", "MonoAndroid10.0"));
});
Task("VS-NET6")
.IsDependentOn("Clean")
.Does(() =>
{
DotNetCoreRestore("Microsoft.Maui-net6.sln");
DotNetCoreBuild("Microsoft.Maui-net6.sln");
StartVisualStudio("Microsoft.Maui-net6.sln");
});
Task("VS")
.Description("Builds projects necessary so solution compiles on VS")
.IsDependentOn("Clean")
.IsDependentOn("VSMAC")
.IsDependentOn("VSWINDOWS");
Task("VSWINDOWS")
.Description("Builds projects necessary so solution compiles on VS Windows")
.WithCriteria(IsRunningOnWindows())
.Does(() =>
{
MSBuild("Microsoft.Maui.sln",
GetMSBuildSettings()
.WithRestore());
StartVisualStudio();
});
Task("VSMAC")
.Description("Builds projects necessary so solution compiles on VSMAC")
.WithCriteria(!IsRunningOnWindows())
.IsDependentOn("BuildTasks")
.Does(() =>
{
MSBuild("src/Core/src.Core.csproj",
GetMSBuildSettings()
.WithRestore());
MSBuild("src/Controls/samples/Controls.Sample.Droid/Controls.Sample.Droid.csproj",
GetMSBuildSettings()
.WithRestore());
MSBuild("src/Controls/samples/Controls.Sample.iOS/Controls.Sample.iOS.csproj",
GetMSBuildSettings()
.WithProperty("iOSPlatform", "iPhoneSimulator")
.WithRestore());
MSBuild("src/Essentials/src/Essentials/Essentials.csproj",
GetMSBuildSettings()
.WithRestore());
StartVisualStudio();
});
@ -1103,18 +1132,6 @@ Task ("cg-ios-deploy")
LaunchiOSApplication(sim.UDID, IOS_BUNDLE_ID);
});
Task("DeployAndroid")
.Description("Builds and deploy Android Control Gallery")
.Does(() =>
{
MSBuild(BUILD_TASKS_PROJ, GetMSBuildSettings().WithRestore());
MSBuild(ANDROID_CONTROLGALLERY_PROJ, GetMSBuildSettings().WithRestore());
BuildAndroidApk(ANDROID_CONTROLGALLERY_PROJ, sign:true, configuration:configuration);
AdbUninstall(ANDROID_BUNDLE_ID);
AdbInstall($"src/Controlgallery/src/Xamarin.Forms.ControlGallery.Android/bin/Debug/{ANDROID_BUNDLE_ID}-Signed.apk");
AmStartActivity($"{ANDROID_BUNDLE_ID}/md546303760447087909496d02dc7b17ae8.Activity1");
});
//////////////////////////////////////////////////////////////////////
// TASK TARGETS
//////////////////////////////////////////////////////////////////////
@ -1169,15 +1186,23 @@ T GetBuildVariable<T>(string key, T defaultValue)
return Argument(key, EnvironmentVariable(key, upperCaseReturnValue));
}
void StartVisualStudio(string sln = "Xamarin.Forms.sln")
void StartVisualStudio(string sln = "./Microsoft.Maui.sln")
{
if(isCIBuild)
return;
if(IsRunningOnWindows())
StartProcess("start", new ProcessSettings{ Arguments = "Xamarin.Forms.sln" });
{
StartProcess("powershell",
new ProcessSettings
{
Arguments = new ProcessArgumentBuilder()
.Append("start")
.Append(sln)
});
}
else
StartProcess("open", new ProcessSettings{ Arguments = "Xamarin.Forms.sln" });
StartProcess("open", new ProcessSettings{ Arguments = sln });
}
MSBuildSettings GetMSBuildSettings(PlatformTarget? platformTarget = PlatformTarget.MSIL, string buildConfiguration = null)
@ -1194,11 +1219,6 @@ MSBuildSettings GetMSBuildSettings(PlatformTarget? platformTarget = PlatformTarg
buildSettings = buildSettings.WithProperty("XamarinFormsVersion", XamarinFormsVersion);
}
if(isCIBuild)
{
buildSettings = buildSettings.WithProperty("RestoreConfigFile", $"eng/DevopsNuget.config");
}
buildSettings.ArgumentCustomization = args => args.Append($"/nowarn:VSX1000 {MSBuildArguments}");
return buildSettings;
}

Просмотреть файл

@ -9,7 +9,7 @@ Param(
)
# Restore Cake tool
& dotnet tool restore --configfile eng/DevopsNuget.config
& dotnet tool restore
# Build Cake arguments
$cakeArguments = @("$Script");

Просмотреть файл

@ -17,7 +17,7 @@ for i in "$@"; do
done
# Restore Cake tool
dotnet tool restore --configfile eng/DevopsNuget.config
dotnet tool restore
if [ $? -ne 0 ]; then
echo "An error occured while installing Cake."

43
eng/AndroidX.targets Normal file
Просмотреть файл

@ -0,0 +1,43 @@
<Project>
<PropertyGroup>
<_AndroidXVersion>net6preview01</_AndroidXVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference
Update="Xamarin.AndroidX.AppCompat.AppCompatResources"
Version="1.2.0.7-$(_AndroidXVersion)"
/>
<PackageReference
Update="Xamarin.AndroidX.Browser"
Version="1.3.0.5-$(_AndroidXVersion)"
/>
<PackageReference
Update="Xamarin.AndroidX.Legacy.Support.V4"
Version="1.0.0.7-$(_AndroidXVersion)"
/>
<PackageReference
Update="Xamarin.AndroidX.Lifecycle.LiveData"
Version="2.3.0.1-$(_AndroidXVersion)"
/>
<PackageReference
Update="Xamarin.AndroidX.MediaRouter"
Version="1.2.2.1-$(_AndroidXVersion)"
/>
<PackageReference
Update="Xamarin.AndroidX.Palette"
Version="1.0.0.7-$(_AndroidXVersion)"
/>
<PackageReference
Update="Xamarin.AndroidX.RecyclerView"
Version="1.1.0.8-net6preview01"
/>
<PackageReference
Update="Xamarin.Build.Download"
Version="0.10.0"
/>
<PackageReference
Update="Xamarin.Google.Android.Material"
Version="1.3.0.1-$(_AndroidXVersion)"
/>
</ItemGroup>
</Project>

Просмотреть файл

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear/>
<add key="dotnet-eng" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json" protocolVersion="3" />
<add key="dotnet-public" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json" protocolVersion="3" />
<add key="dotnet6" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet6/nuget/v3/index.json" />
<add key="xamarin" value="https://pkgs.dev.azure.com/azure-public/vside/_packaging/xamarin-impl/nuget/v3/index.json" />
</packageSources>
<activePackageSource>
<add key="All" value="(Aggregate source)" />
</activePackageSource>
</configuration>

Просмотреть файл

@ -0,0 +1,32 @@
<Project>
<PropertyGroup Condition="'$(TargetFramework.Contains(net6.0))' == 'true'">
<_MicrosoftHostingVersion>6.0.0-preview.2.21110.7</_MicrosoftHostingVersion>
<_MicrosoftDependencyInjectionVersion>$(_MicrosoftHostingVersion)</_MicrosoftDependencyInjectionVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetFramework.Contains(net6.0))' != 'true'">
<_MicrosoftHostingVersion>5.0.0</_MicrosoftHostingVersion>
<_MicrosoftDependencyInjectionVersion>5.0.1</_MicrosoftDependencyInjectionVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference
Update="Microsoft.Extensions.Configuration"
Version="$(_MicrosoftHostingVersion)"
/>
<PackageReference
Update="Microsoft.Extensions.DependencyInjection"
Version="$(_MicrosoftDependencyInjectionVersion)"
/>
<PackageReference
Update="Microsoft.Extensions.Hosting.Abstractions"
Version="$(_MicrosoftHostingVersion)"
/>
<PackageReference
Update="Microsoft.Extensions.Logging.Abstractions"
Version="$(_MicrosoftHostingVersion)"
/>
<PackageReference
Update="Microsoft.Extensions.Logging"
Version="$(_MicrosoftHostingVersion)"
/>
</ItemGroup>
</Project>

Просмотреть файл

@ -7,7 +7,7 @@
<ItemGroup>
</ItemGroup>
<Import Project="$(XamarinFormsSource).nuspec\Xamarin.Forms.targets" Condition="'$(BuildingInsideVisualStudio)' == 'true' AND Exists('$(__XFBuildTasksLocation)Xamarin.Forms.Build.Tasks.dll')" />
<Import Project="$(XamarinFormsSource).nuspec\Xamarin.Forms.targets" Condition="'$(BuildingInsideVisualStudio)' == 'true' AND Exists('$(_MauiBuildTasksLocation)Xamarin.Forms.Build.Tasks.dll')" />
<Import Project="$(XamarinFormsSource).nuspec\Xamarin.Forms.targets" Condition="'$(BuildingInsideVisualStudio)' != 'true'" />
</Project>

Просмотреть файл

@ -1,4 +1,4 @@
<Project>
<Project>
<PropertyGroup>
<NightlyTag>nightly</NightlyTag>
<RegexPre>pre\d</RegexPre>
@ -8,11 +8,34 @@
<GitBranch Condition="'$(SYSTEM_PULLREQUEST_TARGETBRANCH)' == '' and '$(BUILD_SOURCEBRANCHNAME)' != ''">$(BUILD_SOURCEBRANCHNAME)</GitBranch>
</PropertyGroup>
<Target Name="SetVersions"
BeforeTargets="PrepareForBuild;GetAssemblyVersion;GetPackageVersion;Pack"
DependsOnTargets="GitVersion"
Returns="$(Version)"
>
<PropertyGroup>
<CoreCompileDependsOn>
SetVersions;
VersionInfoReport;
$(CoreCompileDependsOn);
</CoreCompileDependsOn>
<GenerateNuspecDependsOn>
SetVersions;
VersionInfoReport;
$(GenerateNuspecDependsOn);
</GenerateNuspecDependsOn>
<GetPackageVersionDependsOn>
SetVersions;
VersionInfoReport;
$(GetPackageVersionDependsOn);
</GetPackageVersionDependsOn>
<SetVersionsBefore>
GetAssemblyVersion;
$(SetVersionsBefore);
</SetVersionsBefore>
<SetVersionsDependsOn>
GitInfo;
GitVersion;
$(SetVersionsDependsOn);
</SetVersionsDependsOn>
</PropertyGroup>
<Target Name="SetVersions" BeforeTargets="$(SetVersionsBefore)" DependsOnTargets="$(SetVersionsDependsOn)" Returns="$(Version)">
<PropertyGroup>
<PreOut>$([System.Text.RegularExpressions.Regex]::Match($(GitTag), $(RegexPre)))</PreOut>
<GitSemVerLabel Condition=" '$(GitTag)' != '' and '$(GitTag)' == '$(GitBranch)' and $([System.Text.RegularExpressions.Regex]::IsMatch('$(GitTag)', $(RegexPre))) ">$(PreOut)</GitSemVerLabel>
@ -37,22 +60,19 @@
<Version>$(GitBaseVersionMajor).$(GitBaseVersionMinor).$(GitBaseVersionPatch)</Version>
<PackageVersion>$(GitSemVerMajor).$(GitSemVerMinor).$(GitSemVerPatch)$(GitSemVerDashLabel)$(VersionMetadataPlusLabel)</PackageVersion>
<PackageVersion Condition="$(CI)">$(GitSemVerMajor).$(GitSemVerMinor).$(GitBaseVersionPatch).$(BUILDVERSION)$(GitSemVerDashLabel)$(VersionMetadataPlusLabel)</PackageVersion>
<PackageVersion Condition="$(CI) and '$(GitBaseVersion)' == '4.2.0'">$(GitSemVerMajor).$(GitSemVerMinor).$(GitBaseVersionPatch).$(BUILDVERSION42)$(GitSemVerDashLabel)$(VersionMetadataPlusLabel)</PackageVersion>
<PackageVersion Condition="$(CI) and '$(GitBaseVersion)' == '4.3.0'">$(GitSemVerMajor).$(GitSemVerMinor).$(GitBaseVersionPatch).$(BUILDVERSION43)$(GitSemVerDashLabel)$(VersionMetadataPlusLabel)</PackageVersion>
<PackageVersion Condition="$(CI) and '$(GitBaseVersion)' == '4.4.0'">$(GitSemVerMajor).$(GitSemVerMinor).$(GitBaseVersionPatch).$(BUILDVERSION44)$(GitSemVerDashLabel)$(VersionMetadataPlusLabel)</PackageVersion>
<PackageVersion Condition="$(CI)">$(GitSemVerMajor).$(GitSemVerMinor).$(GitBaseVersionPatch)$(GitSemVerDashLabel).$(BUILDVERSION)$(VersionMetadataPlusLabel)</PackageVersion>
</PropertyGroup>
<PropertyGroup>
<InformationalVersion>$(PackageVersion)</InformationalVersion>
<FileVersion>$(Version).$(GitCommits)</FileVersion>
<AssemblyVersion>2.0.0.0</AssemblyVersion> <!-- THIS SHALL REMAIN 2.0.0.0 -->
<AssemblyVersion>1.0.0.0</AssemblyVersion> <!-- THIS SHALL REMAIN 1.0.0.0 -->
</PropertyGroup>
<ItemGroup>
<AssemblyAttribute Include="System.Reflection.AssemblyMetadata">
<_Parameter1>Version</_Parameter1>
<_Parameter2>2.0.0.0</_Parameter2> <!-- THIS SHALL REMAIN 2.0.0.0 -->
<_Parameter2>1.0.0.0</_Parameter2> <!-- THIS SHALL REMAIN 1.0.0.0 -->
</AssemblyAttribute>
<AssemblyAttribute Include="System.Reflection.AssemblyMetadata">
<_Parameter1>PackageVersion</_Parameter1>
@ -61,20 +81,12 @@
</ItemGroup>
<Message Condition="$(CI) and '$(BUILD_REASON)' == 'Schedule'" Importance="high" Text="##vso[build.addbuildtag]$(NightlyTag)"/>
<ItemGroup>
<XamarinFormsVersionFile Include="../.XamarinFormsVersionFile.txt"/>
<XamarinFormsVersionLine Include="$(PackageVersion)"/>
</ItemGroup>
<!-- Occasionally this throws an error from parallel builds writing to this file. It's fine if only one of them wins. -->
<WriteLinesToFile ContinueOnError="WarnAndContinue" File="@(XamarinFormsVersionFile)" Lines="@(XamarinFormsVersionLine)" Overwrite="true" />
<Message Condition="$(CI)" Importance="high" Text="##vso[build.updatebuildnumber]$(PackageVersion)"/>
<Message Condition="$(CI)" Importance="high" Text="##vso[task.setvariable variable=XamarinFormsPackageVersion;isOutput=true;]$(PackageVersion)"/>
</Target>
<Target Name="VersionInfoReport" DependsOnTargets="SetVersions" AfterTargets="GitInfoReport">
<Target Name="VersionInfoReport" DependsOnTargets="SetVersions">
<ItemGroup>
<Message Importance="$(GitInfoReportImportance)" Text="Version Info:
<Message Importance="$(GitInfoReportImportance)" Text="Version Info:
AssemblyVersion: $(AssemblyVersion)
FileVersion: $(FileVersion)
InformationalVersion: $(InformationalVersion)
@ -84,6 +96,6 @@
VersionSuffix: $(VersionSuffix)
"/>
</ItemGroup>
</Target>
</Target>
</Project>

Просмотреть файл

@ -20,6 +20,7 @@ string CONFIGURATION = "Debug"; // needs to be debug so unit tests get discovere
string ANDROID_AVD = "DEVICE_TESTS_EMULATOR";
string DEVICE_ID = "";
string DEVICE_ARCH = "";
bool DEVICE_BOOT = Argument("boot", true);
// set up env
var ANDROID_SDK_ROOT = Argument("android", EnvironmentVariable("ANDROID_SDK_ROOT") ?? EnvironmentVariable("ANDROID_SDK_ROOT"));
@ -78,10 +79,10 @@ Setup(context =>
else
DEVICE_ARCH = "arm64-v8a";
}
DEVICE_ID = $"system-images;android-{api};google_apis_playstore;{DEVICE_ARCH}";
DEVICE_ID = $"system-images;android-{api};google_apis;{DEVICE_ARCH}";
// we are not using a virtual device, so quit
if (!emulator)
if (!emulator || !DEVICE_BOOT)
return;
}
@ -115,7 +116,7 @@ Setup(context =>
Teardown(context =>
{
// no virtual device was used
if (emulatorProcess == null)
if (emulatorProcess == null || !DEVICE_BOOT)
return;
// stop and cleanup the emulator
@ -141,7 +142,7 @@ Task("Build")
c.Restore = true;
c.Properties["ContinuousIntegrationBuild"] = new List<string> { "false" };
c.Targets.Clear();
c.Targets.Add("Rebuild");
c.Targets.Add("Build");
c.Targets.Add("SignAndroidPackage");
c.BinaryLogger = new MSBuildBinaryLogSettings {
Enabled = true,

Просмотреть файл

@ -31,7 +31,7 @@ Task("Build")
c.Properties["BuildIpa"] = new List<string> { "true" };
c.Properties["ContinuousIntegrationBuild"] = new List<string> { "false" };
c.Targets.Clear();
c.Targets.Add("Rebuild");
c.Targets.Add("Build");
c.BinaryLogger = new MSBuildBinaryLogSettings {
Enabled = true,
FileName = BINLOG,

Просмотреть файл

Просмотреть файл

@ -33,7 +33,6 @@ steps:
inputs:
restoreSolution: ${{ parameters.slnPath }}
feedsToUse: config
nugetConfigPath: 'eng/DevopsNuget.config'
- script: build.cmd -Target BuildForNuget -ScriptArgs '--BUILD_CONFIGURATION="$(BuildConfiguration)"','--Build_ArtifactStagingDirectory="$(Build.ArtifactStagingDirectory)"'
name: winbuild
@ -41,9 +40,10 @@ steps:
- task: VSTest@2
displayName: 'XAML Unit Tests'
continueOnError: true
inputs:
testAssemblyVer2: |
**/bin/$(BuildConfiguration)/**/Xamarin.Forms.Xaml.UnitTests.dll
**/bin/$(BuildConfiguration)/**/Microsoft.Maui.Controls.Xaml.UnitTests.dll
searchFolder: ${{ parameters.nunitTestFolder }}
codeCoverageEnabled: true
testRunTitle: '$(BuildConfiguration)_UnitTests'
@ -56,9 +56,11 @@ steps:
displayName: 'Unit Tests'
inputs:
command: test
projects: |
**/Xamarin.Forms.Core.UnitTests.csproj
**/Xamarin.Platform.Handlers.UnitTests.csproj
projects: |
**/Controls.Core.UnitTests.csproj
**/Core.UnitTests.csproj
**/Essentials.UnitTests.csproj
**/Resizetizer.UnitTests.csproj
arguments: '--configuration $(BuildConfiguration)'
- task: CopyFiles@2

Просмотреть файл

@ -0,0 +1,74 @@
parameters:
platform: '' # [ android, ios ]
steps:
- checkout: self
clean: true
- ${{ if eq(parameters['platform'], 'ios') }}:
- task: xamops.azdevex.provisionator-task.provisionator@1
displayName: 'Provision Xcode'
condition: ne(variables['REQUIRED_XCODE'], '')
inputs:
provisioning_script: $(provisionator.xcode)
- script: |
echo "##vso[task.prependpath]/Library/Frameworks/Mono.framework/Versions/Current/Commands/"
echo "##vso[task.prependpath]~/Library/Developer/Xamarin/android-sdk-macosx"
displayName: 'Setup SDK Paths'
condition: ne(variables['osx2019VmPool'], 'Azure Pipelines')
- task: InstallAppleCertificate@2
displayName: 'Install an Apple certificate'
inputs:
certSecureFile: 'Xamarin Forms iOS Certificate.p12'
certPwd: $(P12password)
- task: InstallAppleProvisioningProfile@1
displayName: 'Install an Apple provisioning profile'
inputs:
provProfileSecureFile: 'Xamarin Forms iOS Provisioning.mobileprovision'
- task: xamops.azdevex.provisionator-task.provisionator@1
displayName: 'Provisionator'
condition: eq(variables['provisioning'], 'true')
inputs:
provisioning_script: $(provisionator.path)
provisioning_extra_args: $(provisionator.extraArguments)
- pwsh: |
./build.ps1 --target provision --TeamProject="$(System.TeamProject)"
displayName: 'Cake Provision'
condition: eq(variables['provisioningCake'], 'true')
- task: UseDotNet@2
displayName: 'Install .net core $(DOTNET_VERSION)'
condition: ne(variables['DOTNET_VERSION'], '')
inputs:
version: $(DOTNET_VERSION)
packageType: 'sdk'
- ${{ if eq(parameters['platform'], 'android') }}:
- pwsh: |
./build.ps1 -Script eng/devices/android.cake --project="$(devicetests.project)" --device=$(devicetests.device) --results="$(System.DefaultWorkingDirectory)/output/testlogs"
displayName: $(Agent.JobName)
- ${{ if eq(parameters['platform'], 'ios') }}:
- pwsh: |
./build.ps1 -Script eng/devices/ios.cake --project="$(devicetests.project)" --device=$(devicetests.device) --results="$(System.DefaultWorkingDirectory)/output/testlogs"
displayName: $(Agent.JobName)
- task: PublishTestResults@2
displayName: Publish the $(System.StageName)_$(System.PhaseName)_$(System.JobName) test results
condition: always()
inputs:
testResultsFormat: xUnit
testResultsFiles: 'output/testlogs/**/TestResults.xml'
testRunTitle: '$(System.StageName)_$(System.PhaseName)_$(System.JobName)'
- task: PublishBuildArtifacts@1
displayName: Publish the test logs
condition: always()
inputs:
artifactName: $(System.StageName)_$(System.PhaseName)_$(System.JobName)
pathToPublish: 'output/testlogs'

Просмотреть файл

@ -0,0 +1,137 @@
trigger:
- none
pr:
- none
variables:
- template: /eng/pipelines/common/variables.yml
- name: provisionator.xcode
value: '$(System.DefaultWorkingDirectory)/eng/provisioning/xcode.csx'
- name: provisionator.path
value: '$(System.DefaultWorkingDirectory)/eng/provisioning/provisioning.csx'
- name: provisionator.extraArguments
value: '--v'
resources:
repositories:
- repository: xamarin-templates
type: github
name: xamarin/yaml-templates
endpoint: xamarin
ref: refs/heads/main # still defaults to master even though main is the main branch
pipelines:
- pipeline: handlersci
source: xamarin-handlers-ci
trigger:
branches:
- main
- main-handler
stages:
- stage: android_essentials
displayName: Essentials (Android)
dependsOn: []
jobs:
- job: device_tests
workspace:
clean: all
displayName: Device Tests
pool:
name: $(macOSXVmPool)
vmImage: $(macOSXVmImage)
variables:
devicetests.project: '$(System.DefaultWorkingDirectory)/src/Essentials/test/DeviceTests.Android/Essentials.DeviceTests.Android.csproj'
strategy:
matrix:
api_30:
ANDROID_EMULATORS: "system-images;android-30;google_apis;x86"
devicetests.device: android-emulator-32_30
api_29:
ANDROID_EMULATORS: "system-images;android-29;google_apis;x86"
devicetests.device: android-emulator-32_29
api_21:
ANDROID_EMULATORS: "system-images;android-21;google_apis;x86"
devicetests.device: android-emulator-32_21
steps:
- template: common/device-tests.yml
parameters:
platform: android
- stage: android_handlers
displayName: Handlers (Android)
dependsOn: []
jobs:
- job: device_tests
workspace:
clean: all
displayName: Device Tests
pool:
name: $(macOSXVmPool)
vmImage: $(macOSXVmImage)
variables:
devicetests.project: '$(System.DefaultWorkingDirectory)/src/Core/tests/DeviceTests.Android/Core.DeviceTests.Android.csproj'
strategy:
matrix:
api_30:
ANDROID_EMULATORS: "system-images;android-30;google_apis;x86"
devicetests.device: android-emulator-32_30
api_29:
ANDROID_EMULATORS: "system-images;android-29;google_apis;x86"
devicetests.device: android-emulator-32_29
api_21:
ANDROID_EMULATORS: "system-images;android-21;google_apis;x86"
devicetests.device: android-emulator-32_21
steps:
- template: common/device-tests.yml
parameters:
platform: android
- stage: ios_essentials
displayName: Essentials (iOS)
dependsOn: []
jobs:
- job: device_tests
workspace:
clean: all
displayName: Device Tests
pool:
name: $(macOSXVmPool)
vmImage: $(macOSXVmImage)
variables:
devicetests.project: '$(System.DefaultWorkingDirectory)/src/Essentials/test/DeviceTests.iOS/Essentials.DeviceTests.iOS.csproj'
strategy:
matrix:
v14_3:
devicetests.device: ios-simulator-64_14.3
# v10_3_1:
# devicetests.device: ios-simulator-64_10.3.1
steps:
- template: common/device-tests.yml
parameters:
platform: ios
- stage: ios_handlers
displayName: Handlers (iOS)
dependsOn: []
jobs:
- job: device_tests
workspace:
clean: all
displayName: Device Tests
pool:
name: $(macOSXVmPool)
vmImage: $(macOSXVmImage)
variables:
devicetests.project: '$(System.DefaultWorkingDirectory)/src/Core/tests/DeviceTests.iOS/Core.DeviceTests.iOS.csproj'
strategy:
matrix:
v14_3:
devicetests.device: ios-simulator-64_14.3
# v10_3_1:
# devicetests.device: ios-simulator-64_10.3.1
steps:
- template: common/device-tests.yml
parameters:
platform: ios

Просмотреть файл

@ -2,7 +2,7 @@ trigger:
branches:
include:
- main
- main-handlers
- main-handler
paths:
include:
- '*'
@ -21,7 +21,7 @@ pr:
branches:
include:
- main
- main-handlers
- main-handler
paths:
include:
- '*'
@ -45,6 +45,20 @@ schedules:
variables:
- template: /eng/pipelines/common/variables.yml
- name: DotNetVersion
value: 6.0.100-preview.1.21103.13
- name: DotNet.Cli.Telemetry.OptOut
value: true
- name: Android.Msi
value: https://dl.internalx.com/vsts-devdiv/Xamarin.Android/public/net6/4498522/master/2f83bddb99f6a0948631cd0f09bf037ba8a4e359/Microsoft.NET.Workload.Android.11.0.200.118.msi
- name: iOS.Msi
value: https://bosstoragemirror.azureedge.net/wrench/main/f01fde5cd9a7ffffcdc8d241200c35988700fa00/4449408/package/Microsoft.NET.Workload.iOS.14.3.100-ci.main.1079.msi
- name: Android.Pkg
value: https://dl.internalx.com/vsts-devdiv/Xamarin.Android/public/net6/4498522/master/2f83bddb99f6a0948631cd0f09bf037ba8a4e359/Microsoft.NET.Workload.Android-11.0.200-ci.master.118.pkg
- name: iOS.Pkg
value: https://bosstoragemirror.azureedge.net/wrench/main/f01fde5cd9a7ffffcdc8d241200c35988700fa00/4449408/package/notarized/Microsoft.iOS.Bundle.14.3.100-ci.main.1079.pkg
- name: LogDirectory
value: $(Build.ArtifactStagingDirectory)\logs
resources:
repositories:
@ -79,49 +93,87 @@ stages:
parameters:
provisionatorPath : '/build/provisioning/provisioning.csx'
- stage: build_osx
displayName: iOS
# - stage: build_osx
# displayName: iOS
# dependsOn: []
# jobs:
# - job: ios
# workspace:
# clean: all
# displayName: Build ControlGallery iOS
# timeoutInMinutes: 120
# pool:
# name: $(macOSXVmPool)
# vmImage: $(macOSXVmImage)
# demands:
# - sh
# - Xamarin.iOS
# variables:
# provisionator.xcode : '$(System.DefaultWorkingDirectory)/eng/provisioning/xcode.csx'
# provisionator.path : '$(System.DefaultWorkingDirectory)/eng/provisioning/provisioning.csx'
# provisionator.extraArguments : '--v'
# steps:
# - template: common/controlgallery-ios.yml
# - stage: build_android
# displayName: Android
# dependsOn: []
# jobs:
# - job: android
# workspace:
# clean: all
# displayName: Build ControlGallery Android
# timeoutInMinutes: 120
# pool:
# name: $(macOSXVmPool)
# vmImage: $(macOSXVmImage)
# variables:
# renderers: 'FAST'
# outputfolder: 'newRenderers'
# provisionator.xcode : '$(System.DefaultWorkingDirectory)/eng/provisioning/xcode.csx'
# provisionator.path : '$(System.DefaultWorkingDirectory)/eng/provisioning/provisioning.csx'
# provisionator.extraArguments : '--v'
# steps:
# - template: common/controlgallery-android.yml
- stage: pack_net6_windows
displayName: Pack .NET 6 Windows
dependsOn: []
jobs:
- job: ios
- job: net6_pack
workspace:
clean: all
displayName: Build ControlGallery iOS
displayName: Pack .NET 6
timeoutInMinutes: 120
pool:
name: $(macOSXVmPool)
vmImage: $(macOSXVmImage)
demands:
- sh
- Xamarin.iOS
variables:
provisionator.xcode : '$(System.DefaultWorkingDirectory)/eng/provisioning/xcode.csx'
provisionator.path : '$(System.DefaultWorkingDirectory)/eng/provisioning/provisioning.csx'
provisionator.extraArguments : '--v'
vmImage: windows-latest
steps:
- template: common/controlgallery-ios.yml
- stage: build_android
displayName: Android
dependsOn: []
jobs:
- job: android
workspace:
clean: all
displayName: Build ControlGallery Android
timeoutInMinutes: 120
pool:
name: $(macOSXVmPool)
vmImage: $(macOSXVmImage)
variables:
renderers: 'FAST'
outputfolder: 'newRenderers'
provisionator.xcode : '$(System.DefaultWorkingDirectory)/eng/provisioning/xcode.csx'
provisionator.path : '$(System.DefaultWorkingDirectory)/eng/provisioning/provisioning.csx'
provisionator.extraArguments : '--v'
steps:
- template: common/controlgallery-android.yml
- pwsh: |
$ProgressPreference = 'SilentlyContinue'
Invoke-WebRequest -Uri "https://dot.net/v1/dotnet-install.ps1" -OutFile dotnet-install.ps1
& .\dotnet-install.ps1 -Version $(DotNetVersion) -InstallDir "$env:ProgramFiles\dotnet\" -Verbose
& dotnet --list-sdks
displayName: install .NET $(DotNetVersion)
errorActionPreference: stop
- pwsh: |
& dotnet tool install --global boots
& boots $(Android.Msi)
& boots $(iOS.Msi)
displayName: install .NET workloads
errorActionPreference: stop
- pwsh: ./.nuspec/package.ps1 -configuration Release
displayName: pack nugets
errorActionPreference: stop
- task: PublishPipelineArtifact@1
displayName: publish artifacts
inputs:
artifactName: nuget
targetPath: artifacts
condition: always()
- stage: build_net6_windows
displayName: NET6 Windows
dependsOn: []
@ -133,12 +185,12 @@ stages:
timeoutInMinutes: 120
pool:
vmImage: windows-latest
variables:
DotNetVersion: 6.0.100-preview.1.21081.5
DotNet.Cli.Telemetry.OptOut: true
Android.Msi: https://dl.internalx.com/vsts-devdiv/Xamarin.Android/public/net6/4435786/master/abea285994fb4366de7c6c5e1ae9cc9ee22145dd/Microsoft.NET.Workload.Android.11.0.200.72.msi
iOS.Msi: https://bosstoragemirror.azureedge.net/wrench/main/f01fde5cd9a7ffffcdc8d241200c35988700fa00/4449408/package/Microsoft.NET.Workload.iOS.14.3.100-ci.main.1079.msi
LogDirectory: $(Build.ArtifactStagingDirectory)\logs
strategy:
matrix:
debug:
BuildConfiguration: 'Debug'
release:
BuildConfiguration: 'Release'
steps:
- powershell: |
$ProgressPreference = 'SilentlyContinue'
@ -156,19 +208,18 @@ stages:
errorActionPreference: stop
- powershell: |
& dotnet restore Maui.sln --configfile eng\DevopsNuget.config
& dotnet build Maui.sln -c Debug -bl:$(LogDirectory)\Debug.binlog
& dotnet build Maui.sln -c Release -bl:$(LogDirectory)\Release.binlog
& dotnet restore Microsoft.Maui-net6.sln
& dotnet build Microsoft.Maui-net6.sln -c $(BuildConfiguration) -bl:$(LogDirectory)\$(BuildConfiguration).binlog
displayName: build samples
errorActionPreference: stop
- task: PublishPipelineArtifact@1
displayName: publish artifacts
inputs:
artifactName: NET6-WINDOWS
artifactName: NET6-WINDOWS-$(BuildConfiguration)
targetPath: $(Build.ArtifactStagingDirectory)
condition: always()
- stage: build_net6_macOS
displayName: NET6 macOS
dependsOn: []
@ -181,14 +232,14 @@ stages:
pool:
vmImage: macOS-latest
variables:
DotNetVersion: 6.0.100-preview.1.21081.5
DotNet.Cli.Telemetry.OptOut: true
Android.Pkg: https://dl.internalx.com/vsts-devdiv/Xamarin.Android/public/net6/4435786/master/abea285994fb4366de7c6c5e1ae9cc9ee22145dd/Microsoft.NET.Workload.Android-11.0.200-ci.master.72.pkg
iOS.Pkg: https://bosstoragemirror.azureedge.net/wrench/main/f01fde5cd9a7ffffcdc8d241200c35988700fa00/4449408/package/notarized/Microsoft.iOS.Bundle.14.3.100-ci.main.1079.pkg
LogDirectory: $(Build.ArtifactStagingDirectory)\logs
DotNet.Root: /usr/local/share/dotnet/
DotNet.Tools: ~/.dotnet/tools
strategy:
matrix:
debug:
BuildConfiguration: 'Debug'
release:
BuildConfiguration: 'Release'
steps:
- task: UseDotNet@2
displayName: install .NET Core 3.1
@ -219,14 +270,13 @@ stages:
displayName: configure vsmac xcode
- bash: |
dotnet restore Maui.sln --configfile eng/DevopsNuget.config &&
dotnet build Maui.sln -c Debug -bl:$(LogDirectory)/Debug.binlog &&
dotnet build Maui.sln -c Release -bl:$(LogDirectory)/Release.binlog
dotnet restore Microsoft.Maui-net6.sln &&
dotnet build Microsoft.Maui-net6.sln -c $BUILDCONFIGURATION -bl:$BUILD_ARTIFACTSTAGINGDIRECTORY/logs/$BUILDCONFIGURATION.binlog
displayName: build samples
- task: PublishPipelineArtifact@1
displayName: publish artifacts
inputs:
artifactName: NET6-OSX
artifactName: NET6-OSX-$(BuildConfiguration)
targetPath: $(Build.ArtifactStagingDirectory)
condition: always()

Просмотреть файл

@ -1,131 +0,0 @@
parameters:
name: '' # in the form type_platform_host
displayName: '' # the human name
vmImage: 'macOS-10.15' # the VM image
vmPool: 'Azure Pipelines' # the VM pool
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'
androidProjectPath : 'Xamarin.Forms.ControlGallery.Android/Xamarin.Forms.ControlGallery.Android.csproj'
buildConfiguration : 'Debug'
nugetVersion: $(NUGET_VERSION)
monoVersion: $(MONO_VERSION)
provisionatorPath: 'build/provisioning/provisioning.csx'
provisionatorExtraArguments: ''
MSBuildArguments_cg_android: ''
jobs:
- job: ${{ parameters.name }}
workspace:
clean: all
displayName: ${{ parameters.displayName }}
timeoutInMinutes: 120
pool:
name: ${{ coalesce(parameters.vmPool, 'Azure Pipelines') }}
vmImage: ${{ coalesce(parameters.vmImage, 'macOS-10.15') }}
dependsOn: ${{ parameters.dependsOn }}
strategy:
matrix:
android_legacy:
renderers: 'LEGACY'
outputfolder: 'legacyRenderers'
android_newRenderers:
renderers: 'FAST'
outputfolder: 'newRenderers'
steps:
- checkout: self
clean: true
- task: UseDotNet@2
displayName: 'Install .net core $(DOTNET_VERSION)'
condition: ne(variables['DOTNET_VERSION'], '')
inputs:
version: $(DOTNET_VERSION)
packageType: 'sdk'
- task: Bash@3
displayName: 'Cake Provision'
condition: eq(variables['provisioningCake'], 'true')
inputs:
targetType: 'filePath'
filePath: 'build.sh'
arguments: --target provision --TeamProject="$(System.TeamProject)"
- task: xamops.azdevex.provisionator-task.provisionator@1
displayName: 'Provisionator'
condition: eq(variables['provisioning'], 'true')
inputs:
provisioning_script: ${{ parameters.provisionatorPath }}
provisioning_extra_args: ${{ parameters.provisionator.extraArguments }}
- script: '/bin/bash -c "sudo $AGENT_HOMEDIRECTORY/scripts/select-xamarin-sdk.sh ${{ parameters.monoVersion }}"'
displayName: 'Select MONO ${{ parameters.monoVersion }}'
- task: NuGetToolInstaller@1
displayName: 'Use NuGet'
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'
- bash: |
echo "##vso[task.setvariable variable=NUGET_RESTORE_MSBUILD_ARGS]${{ parameters.MSBuildArguments_cg_android }}"
displayName: 'Set NUGET_RESTORE_MSBUILD_ARGS for Nuget'
- bash: |
env | grep NUGET_RESTORE_MSBUILD_ARGS
displayName: 'Display NUGET_RESTORE_MSBUILD_ARGS for Nuget'
- task: NuGetCommand@2
displayName: 'NuGet restore ${{ parameters.slnPath }}'
inputs:
command: restore
restoreSolution: 'Xamarin.Forms.sln'
feedsToUse: config
nugetConfigPath: 'DevopsNuget.config'
- task: Bash@3
displayName: 'Build Android $(renderers)'
inputs:
targetType: 'filePath'
filePath: 'build.sh'
arguments: --target cg-android --ANDROID_RENDERERS="$(renderers)" --GoogleMapsAPIKey="$(GoogleMapsAPIKey)" --BUILD_CONFIGURATION=${{ parameters.buildConfiguration }} --MSBuildArguments='${{ variables.MSBuildArguments_cg_android }} '
- task: CopyFiles@2
displayName: 'Copy $(renderers)'
inputs:
SourceFolder: Xamarin.Forms.ControlGallery.Android/bin/${{ parameters.buildConfiguration }}/
Contents: '**/*.apk'
TargetFolder: 'Xamarin.Forms.ControlGallery.Android/$(outputfolder)/'
CleanTargetFolder: true
OverWrite: true
- task: CopyFiles@2
displayName: 'Copy Android apk $(renderers) for UITest'
inputs:
Contents: |
Xamarin.Forms.ControlGallery.Android/$(outputfolder)/$(ApkName)
TargetFolder: '$(build.artifactstagingdirectory)/androidApp'
CleanTargetFolder: true
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: AndroidApps'
condition: always()
inputs:
PathtoPublish: '$(build.artifactstagingdirectory)'
ArtifactName: OSXArtifacts

Просмотреть файл

@ -1,93 +0,0 @@
steps:
- checkout: self
clean: true
- task: DownloadBuildArtifacts@0
displayName: 'Download build artifact win_build'
inputs:
artifactName: 'win_build'
downloadPath: '$(Build.ArtifactsDirectory)'
- task: CopyFiles@2
displayName: 'Copy Files to: $(System.DefaultWorkingDirectory)'
inputs:
SourceFolder: '$(Build.ArtifactsDirectory)/win_build'
TargetFolder: '$(System.DefaultWorkingDirectory)'
- task: CopyFiles@2
displayName: 'Copy SignList.xml Files'
inputs:
Contents: build/SignList.xml
TargetFolder: '$(build.artifactstagingdirectory)/nuget'
flattenFolders: true
- task: PowerShell@1
displayName: 'Generate docs from docs repo'
inputs:
scriptName: 'build/scripts/generate-docs.ps1'
arguments: '"$(Build.SourceBranch)" "$(github--pat--xamarinreleasemanager)"'
workingFolder: '$(System.DefaultWorkingDirectory)/build/scripts'
- task: NuGetToolInstaller@1
displayName: 'Use NuGet: $(NUGET_VERSION)'
inputs:
versionSpec: $(NUGET_VERSION)
- task: NuGetCommand@2
displayName: 'Make NuGet Package'
inputs:
command: pack
feedsToUse: config
packagesToPack: '.nuspec/*.nuspec'
packDestination: '$(Build.ArtifactStagingDirectory)/nuget/debug'
versioningScheme: byEnvVar
versionEnvVar: nugetPackageVersion
configuration: $(buildConfiguration)
- task: CopyFiles@2
displayName: 'Copy SignList.xml Files'
inputs:
Contents: build/SignList.xml
TargetFolder: '$(build.artifactstagingdirectory)/nuget/debug'
flattenFolders: true
- powershell: |
$buildConfiguration = "Release"
$formsNugetVersion = "" + $env:nugetPackageVersion
Write-Host("Update nuspecs")
Get-ChildItem './.nuspec/*.nuspec' -Recurse | Foreach-Object {
(Get-Content $_) | Foreach-Object {
$_ -replace '\$version\$', $formsNugetVersion `
-replace '\$Configuration\$', $buildConfiguration `
} | Set-Content $_
}
failOnStderr: true
displayName: 'Update nuspecs'
condition: and(succeeded(), or(eq(variables['Sign'], 'true'), or(eq(variables['DefaultBuildConfiguration'], 'Release'), eq(variables['Build.SourceBranch'], 'refs/heads/main'), startsWith(variables['Build.SourceBranch'],'refs/tags/'))))
- task: NuGetCommand@2
displayName: 'Make NuGet Package Release'
inputs:
command: pack
feedsToUse: config
packagesToPack: '.nuspec/*.nuspec'
packDestination: '$(Build.ArtifactStagingDirectory)/nuget/release'
versioningScheme: byEnvVar
versionEnvVar: nugetPackageVersion
condition: and(succeeded(), or(eq(variables['Sign'], 'true'), or(eq(variables['DefaultBuildConfiguration'], 'Release'), eq(variables['Build.SourceBranch'], 'refs/heads/main'), startsWith(variables['Build.SourceBranch'],'refs/tags/'))))
- task: CopyFiles@2
displayName: 'Copy SignList.xml Files'
inputs:
Contents: build/SignList.xml
TargetFolder: '$(build.artifactstagingdirectory)/nuget/release'
flattenFolders: true
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: nuget'
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)/nuget'
ArtifactName: nuget

Просмотреть файл

@ -1,166 +0,0 @@
steps:
- checkout: self
clean: true
- task: xamops.azdevex.provisionator-task.provisionator@1
displayName: 'Provision Xcode'
condition: ne(variables['REQUIRED_XCODE'], '')
inputs:
provisioning_script: 'build/provisioning/xcode.csx'
- task: xamops.azdevex.provisionator-task.provisionator@1
displayName: 'Provisionator'
condition: eq(variables['provisioning'], 'true')
inputs:
provisioning_script: $(provisionator.osxPath)
provisioning_extra_args: $(provisionator.extraArguments) --v
- script: |
echo "##vso[task.prependpath]/Library/Frameworks/Mono.framework/Versions/Current/Commands/"
echo "##vso[task.prependpath]~/Library/Developer/Xamarin/android-sdk-macosx"
displayName: 'Setup SDK Paths'
condition: ne(variables['osx2019VmPool'], 'Azure Pipelines')
- task: UseDotNet@2
displayName: 'Install .net core $(DOTNET_VERSION)'
condition: ne(variables['DOTNET_VERSION'], '')
inputs:
version: $(DOTNET_VERSION)
packageType: 'sdk'
- task: Bash@3
displayName: 'Cake Provision'
condition: eq(variables['provisioningCake'], 'true')
inputs:
targetType: 'filePath'
filePath: 'build.sh'
arguments: --target provision --TeamProject="$(System.TeamProject)"
- task: NuGetToolInstaller@1
displayName: 'Use NuGet'
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:
command: restore
restoreSolution: 'Xamarin.Forms.sln'
feedsToUse: config
nugetConfigPath: 'DevopsNuget.config'
- task: InstallAppleCertificate@2
displayName: 'Install an Apple certificate'
inputs:
certSecureFile: 'Xamarin Forms iOS Certificate.p12'
certPwd: $(P12password)
- task: InstallAppleProvisioningProfile@1
displayName: 'Install an Apple provisioning profile'
inputs:
provProfileSecureFile: 'Xamarin Forms iOS Provisioning.mobileprovision'
- task: Bash@3
displayName: 'Build Control Gallery IPA'
inputs:
targetType: 'filePath'
filePath: 'build.sh'
arguments: --target cg-ios --BUILD_CONFIGURATION=$(buildConfiguration) --MSBuildArguments='${{ variables.MSBuildArguments_cg_ios }} '
- task: Bash@3
displayName: 'Build iOS Tests'
inputs:
targetType: 'filePath'
filePath: 'build.sh'
arguments: --target cg-ios-build-tests --BUILD_CONFIGURATION=$(buildConfiguration) --MSBuildArguments='${{ variables.MSBuildArguments_cg_ios }} '
- task: CopyFiles@2
displayName: 'Copy iOS Files for UITest'
inputs:
Contents: |
**/XamarinFormsControlGalleryiOS.ipa
Xamarin.Forms.Core.iOS.UITests/bin/$(BuildConfiguration)/Newtonsoft.Json.*
Xamarin.Forms.Core.iOS.UITests/bin/$(BuildConfiguration)/nunit.*
Xamarin.Forms.Core.iOS.UITests/bin/$(BuildConfiguration)/NUnit3.*
Xamarin.Forms.Core.iOS.UITests/bin/$(BuildConfiguration)/Plugin.*
Xamarin.Forms.Core.iOS.UITests/bin/$(BuildConfiguration)/Xamarin.*
TargetFolder: '$(build.artifactstagingdirectory)/ios'
flattenFolders: true
- task: CopyFiles@2
displayName: 'Copy iOS dSYM'
inputs:
SourceFolder: Xamarin.Forms.ControlGallery.iOS/bin/iPhone/$(BuildConfiguration)/XamarinFormsControlGalleryiOS.app.dSYM/
TargetFolder: '$(build.artifactstagingdirectory)/ios/iPhone/XamarinFormsControlGalleryiOS.app.dSYM/'
CleanTargetFolder: false
flattenFolders: false
- task: CopyFiles@2
displayName: 'Copy iOS App'
inputs:
SourceFolder: Xamarin.Forms.ControlGallery.iOS/bin/iPhoneSimulator/$(BuildConfiguration)/XamarinFormsControlGalleryiOS.app/
TargetFolder: '$(build.artifactstagingdirectory)/ios/iPhoneSimulator/XamarinFormsControlGalleryiOS.app/'
CleanTargetFolder: false
flattenFolders: false
- 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'
inputs:
Contents: '**/Xamarin.UITest.*/tools/test-cloud.exe'
TargetFolder: '$(build.artifactstagingdirectory)/testcloud'
OverWrite: true
flattenFolders: true
- task: CopyFiles@2
displayName: 'Copy Android Files for UITest'
inputs:
Contents: |
Xamarin.Forms.Core.Android.UITests/bin/$(BuildConfiguration)/Newtonsoft.Json.*
Xamarin.Forms.Core.Android.UITests/bin/$(BuildConfiguration)/nunit.*
Xamarin.Forms.Core.Android.UITests/bin/$(BuildConfiguration)/NUnit3.*
Xamarin.Forms.Core.Android.UITests/bin/$(BuildConfiguration)/Plugin.*
Xamarin.Forms.Core.Android.UITests/bin/$(BuildConfiguration)/Xamarin.*
TargetFolder: '$(build.artifactstagingdirectory)/android'
CleanTargetFolder: true
flattenFolders: true
- task: CopyFiles@2
displayName: 'Copy Cake File'
inputs:
Contents: |
build.cake
build/provisioning/provisioning.csx
build/provisioning/xcode.csx
TargetFolder: '$(build.artifactstagingdirectory)'
CleanTargetFolder: false
flattenFolders: true
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: iOS'
condition: always()
inputs:
PathtoPublish: '$(build.artifactstagingdirectory)'
ArtifactName: OSXArtifacts

Просмотреть файл

@ -1,213 +0,0 @@
parameters:
msbuildExtraArguments : ''
artifactsTargetFolder: '$(build.artifactstagingdirectory)'
artifactsName: 'win_build'
nunitTestFolder: '$(build.sourcesdirectory)'
includeUwp: 'true'
includeAndroid: 'true'
includeNonUwpAndNonAndroid: 'true'
steps:
- checkout: self
clean: true
- script: build.cmd -Target provision
displayName: 'Cake Provision'
condition: eq(variables['provisioningCake'], 'true')
- task: xamops.azdevex.provisionator-task.provisionator@1
displayName: 'Provisionator'
condition: eq(variables['provisioning'], 'true')
inputs:
provisioning_script: ${{ parameters.provisionatorPath }}
provisioning_extra_args: ${{ parameters.provisionator.extraArguments }}
# - task: UseDotNet@2
# displayName: "Install .net core $(DOTNET_VERSION)"
# condition: ne(variables['DOTNET_VERSION'], '')
# inputs:
# version: $(DOTNET_VERSION)
# packageType: 'sdk'
- script: build.cmd -Target cg-uwp-build-tests -ScriptArgs '--BUILD_CONFIGURATION="$(BuildConfiguration)"'
condition: eq(variables['BuildConfiguration'], 'Release')
displayName: 'Build Tests and APPX'
- task: CopyFiles@2
displayName: 'Copy Appx Packages'
condition: eq(variables['BuildConfiguration'], 'Release')
inputs:
Contents: |
Xamarin.Forms.ControlGallery.WindowsUniversal/AppPackages/*/*
Xamarin.Forms.ControlGallery.WindowsUniversal/AppPackages/*/Add-AppDevPackage.resources/**
Xamarin.Forms.ControlGallery.WindowsUniversal/AppPackages/*/TelemetryDependencies/**
Xamarin.Forms.ControlGallery.WindowsUniversal/AppPackages/*/Dependencies/x86/**
TargetFolder: '$(build.artifactstagingdirectory)'
- script: build.cmd -Target BuildForNuget -ScriptArgs '--BUILD_CONFIGURATION="$(BuildConfiguration)"','--Build_ArtifactStagingDirectory="$(Build.ArtifactStagingDirectory)"'
name: winbuild
displayName: 'Build Projects For Nuget'
- task: VSTest@2
displayName: 'Unit Tests'
inputs:
testAssemblyVer2: |
**/bin/$(BuildConfiguration)/Xamarin.Forms.Core.UnitTests.dll
**/bin/$(BuildConfiguration)/**/Xamarin.Forms.DualScreen.UnitTests.dll
**/bin/$(BuildConfiguration)/**/Xamarin.Forms.Xaml.UnitTests.dll
searchFolder: ${{ parameters.nunitTestFolder }}
codeCoverageEnabled: true
testRunTitle: '$(BuildConfiguration)_UnitTests'
configuration: '$(BuildConfiguration)'
diagnosticsEnabled: true
- task: CopyFiles@2
displayName: 'Copy Files dlls'
condition: eq(${{ parameters.includeNonUwpAndNonAndroid }}, 'true')
inputs:
Contents: |
Stubs/**/bin/**/*.dll
Microsoft.XamlStandard/bin/**/*.dll
Microsoft.XamlStandard.Design/bin/**/*.dll
Xamarin.Forms.Core/bin/**/*.dll
Xamarin.Forms.Core/bin/**/*.pdb
Xamarin.Forms.Core/bin/**/*.mdb
Xamarin.Forms.Xaml/bin/**/*.dll
Xamarin.Forms.Xaml/bin/**/*.pdb
Xamarin.Forms.Xaml/bin/**/*.mdb
Xamarin.Forms.Platform/bin/**/*.dll
Xamarin.Forms.Build.Tasks/bin/**/*.dll
Xamarin.Forms.Core.Design/bin/**/*.dll
Xamarin.Forms.Xaml.Design/bin/**/*.dll
Xamarin.Forms.Maps/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Maps/bin/$(BuildConfiguration)/**/*.mdb
Xamarin.Forms.Maps/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.Platform.iOS/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Platform.iOS/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.Platform.iOS/bin/$(BuildConfiguration)/**/*.mdb
Xamarin.Forms.Material.iOS/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Material.iOS/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.Material.iOS/bin/$(BuildConfiguration)/**/*.mdb
Xamarin.Forms.Material.Tizen/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Material.Tizen/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.Material.Tizen/bin/$(BuildConfiguration)/**/*.mdb
Xamarin.Forms.Platform.MacOS/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Platform.MacOS/bin/$(BuildConfiguration)/**/*.mdb
Xamarin.Forms.Maps/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Maps/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.Maps/bin/$(BuildConfiguration)/**/*.mdb
Xamarin.Forms.Maps.iOS/bin/iPhoneSimulator/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Maps.MacOS/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Core.UnitTests/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Xaml.UnitTests/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Maps.Tizen/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Maps.Tizen/bin/$(BuildConfiguration)/**/*.mdb
Xamarin.Forms.Maps.Tizen/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.Platform.Tizen/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Platform.Tizen/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.Platform.Tizen/bin/$(BuildConfiguration)/**/*.mdb
Xamarin.Forms.Build.Tasks.Core/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Build.Tasks.Core/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.Build.Tasks.Core/bin/$(BuildConfiguration)/**/*.mdb
Xamarin.Forms.Maps.WPF/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Maps.WPF/bin/$(BuildConfiguration)/**/*.mdb
Xamarin.Forms.Maps.WPF/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.Maps.GTK/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Maps.GTK/bin/$(BuildConfiguration)/**/*.mdb
Xamarin.Forms.Maps.GTK/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.Platform.WPF/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Platform.WPF/bin/$(BuildConfiguration)/**/*.mdb
Xamarin.Forms.Platform.WPF/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.Platform.GTK/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Platform.GTK/bin/$(BuildConfiguration)/**/*.mdb
Xamarin.Forms.Platform.GTK/bin/$(BuildConfiguration)/**/*.pdb
Microsoft.XamlStandard/bin/$(BuildConfiguration)/**/*.dll
Microsoft.XamlStandard/bin/$(BuildConfiguration)/**/*.mdb
Microsoft.XamlStandard/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.DualScreen/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.DualScreen/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.DualScreen/bin/$(BuildConfiguration)/**/*.mdb
Xamarin.Forms.DualScreen.UnitTests/bin/$(BuildConfiguration)/**/*.dll
**/*.binlog
TargetFolder: ${{ parameters.artifactsTargetFolder }}
- task: CopyFiles@2
displayName: 'Copy UWP'
condition: eq(${{ parameters.includeUwp }}, 'true')
inputs:
Contents: |
Xamarin.Forms.Platform.UAP/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.Platform.UAP/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Platform.UAP/bin/$(BuildConfiguration)/**/*.pri
Xamarin.Forms.Platform.UAP/bin/$(BuildConfiguration)/**/*.xr.xml
Xamarin.Forms.Platform.UAP/obj/$(BuildConfiguration)/**/*.xaml
Xamarin.Forms.Platform.UAP/Properties/Xamarin.Forms.Platform.UAP.rd.xml
Xamarin.Forms.Maps.UWP/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Maps.UWP/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.Maps.UWP/bin/$(BuildConfiguration)/**/*.pri
Xamarin.Forms.Maps.UWP/bin/$(BuildConfiguration)/**/*.xbf
Xamarin.Forms.DualScreen/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.DualScreen/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.DualScreen/bin/$(BuildConfiguration)/**/*.mdb
Xamarin.Forms.DualScreen.UnitTests/bin/$(BuildConfiguration)/**/*.dll
TargetFolder: ${{ parameters.artifactsTargetFolder }}
- task: CopyFiles@2
displayName: 'Copy Android Files dlls'
condition: eq('${{ parameters.includeAndroid }}', true)
inputs:
Contents: |
Stubs/**/bin/**/*.dll
Xamarin.Forms.Platform.Android/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Platform.Android/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.Platform.Android.FormsViewGroup/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Platform.Android.FormsViewGroup/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.Material.Android/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Material.Android/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.Material.Android/bin/$(BuildConfiguration)/**/*.mdb
Xamarin.Forms.Maps.Android/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Platform.Android.AppLinks/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Platform.Android.AppLinks/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.Platform.Android.AppLinks/bin/$(BuildConfiguration)/**/*.mdb
Xamarin.Forms.DualScreen/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.DualScreen/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.DualScreen/bin/$(BuildConfiguration)/**/*.mdb
Xamarin.Forms.DualScreen.UnitTests/bin/$(BuildConfiguration)/**/*.dll
**/*.binlog
TargetFolder: ${{ parameters.artifactsTargetFolder }}
- task: CopyFiles@2
displayName: 'Copy Cake File'
inputs:
Contents: |
build.cake
TargetFolder: '${{ parameters.artifactsTargetFolder }}'
CleanTargetFolder: false
flattenFolders: false
- task: CopyFiles@2
displayName: 'Copy UITest Files'
condition: eq(variables['BuildConfiguration'], 'Release')
inputs:
SourceFolder: Xamarin.Forms.Core.Windows.UITests/bin/Debug/
TargetFolder: '$(build.artifactstagingdirectory)/UITests'
- task: CopyFiles@2
displayName: 'Copy Certificate File'
condition: eq(variables['BuildConfiguration'], 'Debug')
inputs:
Contents: |
Xamarin.Forms.ControlGallery.WindowsUniversal\Xamarin.Forms.ControlGallery.WindowsUniversal_TemporaryKey.pfx
TargetFolder: '$(build.artifactstagingdirectory)'
CleanTargetFolder: false
flattenFolders: false
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: ${{ parameters.artifactsName }}'
condition: always()
inputs:
ArtifactName: ${{ parameters.artifactsName }}

Просмотреть файл

@ -1,266 +0,0 @@
variables:
- name: DefaultBuildPlatform
value: 'any cpu'
- name: ApkName
value: AndroidControlGallery.AndroidControlGallery.apk
- name: SolutionFile
value: Xamarin.Forms.sln
- name: BuildVersion
value: $[counter('nuget-counter', 126)]
- name: NUGET_VERSION
value: 5.6.0
- name: DOTNET_SKIP_FIRST_TIME_EXPERIENCE
value: true
- name: DOTNET_VERSION
value: 5.0.102
resources:
repositories:
- repository: xamarin-templates
type: github
name: xamarin/yaml-templates
endpoint: xamarin
ref: refs/heads/main # still defaults to master even though main is the main branch
trigger:
branches:
include:
- main
- main-handler
tags:
include:
- '*'
paths:
exclude:
- README.md
pr:
autoCancel: false
branches:
include:
- main
- 3.*
- 4.*
- 5.*
schedules:
- cron: "0 0 * * *"
displayName: Daily midnight build
branches:
include:
- main
stages:
- stage: windows
displayName: Build Windows
jobs:
- job: win_hosted
condition: eq(variables['vs2019VmPool'], 'Azure Pipelines')
workspace:
clean: all
displayName: Build Windows Phase
timeoutInMinutes: 60
pool:
name: $(vs2019VmPool)
vmImage: $(vs2019VmImage)
demands:
msbuild
strategy:
matrix:
debug:
BuildConfiguration: 'Debug'
release:
BuildConfiguration: 'Release'
steps:
- template: build/steps/build-windows.yml
parameters:
provisionatorPath : 'build/provisioning/provisioning.csx'
# - job: nuget_pack_hosted
# workspace:
# clean: all
# displayName: Nuget Phase
# dependsOn:
# - win_hosted
# condition: succeeded()
# pool:
# name: $(vs2019VmPool)
# vmImage: $(vs2019VmImage)
# demands:
# msbuild
# variables:
# FormsIdAppend: ''
# buildConfiguration: $(DefaultBuildConfiguration)
# nugetPackageVersion : $[ dependencies.win_hosted.outputs['debug.winbuild.xamarinformspackageversion'] ]
# steps:
# - template: build/steps/build-nuget.yml
- job: win_bots
condition: ne(variables['vs2019VmPool'], 'Azure Pipelines')
workspace:
clean: all
displayName: Build Windows Phase Bots
timeoutInMinutes: 60
pool:
name: $(vs2019VmPool)
vmImage: $(vs2019VmImage)
demands:
- Agent.OS -equals Windows_NT
- msbuild
strategy:
matrix:
debug:
BuildConfiguration: 'Debug'
release:
BuildConfiguration: 'Release'
steps:
- template: build/steps/build-windows.yml
parameters:
provisionatorPath : 'build/provisioning/provisioning.csx'
# - job: nuget_pack_bots
# workspace:
# clean: all
# displayName: Nuget Phase
# dependsOn:
# - win_bots
# condition: succeeded()
# pool:
# name: $(vs2019VmPool)
# vmImage: $(vs2019VmImage)
# demands:
# - Agent.OS -equals Windows_NT
# - msbuild
# variables:
# FormsIdAppend: ''
# buildConfiguration: $(DefaultBuildConfiguration)
# nugetPackageVersion : $[ dependencies.win_bots.outputs['debug.winbuild.xamarinformspackageversion'] ]
# steps:
# - template: build/steps/build-nuget.yml
# - 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:
# vmPool: $[coalesce(variables.macAndroid2019VmPool, 'Azure Pipelines')]
# vmImage: $[coalesce(variables.macAndroid2019VmImage, 'macOS-10.15')]
# provisionatorPath : 'build/provisioning/provisioning.csx'
# buildConfiguration: $(DefaultBuildConfiguration)
# ${{ if ne(variables['MSBuildArguments_cg_android'], '') }}:
# MSBuildArguments_cg_android: $(MSBuildArguments_cg_android)
# - 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
# timeoutInMinutes: 120
# pool:
# name: $(osx2019VmPool)
# vmImage: $(macOSXVmImage)
# demands:
# - sh
# - Xamarin.iOS
# variables:
# provisionator.osxPath : 'build/provisioning/provisioning.csx'
# buildConfiguration: $(DefaultBuildConfiguration)
# iOSCertSecureFileName: 'Xamarin Forms iOS Certificate.p12'
# iOSProvisioningSecureFileName: 'Xamarin Forms iOS Provisioning.mobileprovision'
# steps:
# - template: build/steps/build-osx.yml
- stage: PoliCheck
displayName: 'Code Analysis'
dependsOn: windows
jobs:
- job: run_poli_check
displayName: 'Policheck And Credentials Compliance'
pool:
name: $(vs2019VmPool)
vmImage: $(vs2019VmImage)
timeoutInMinutes: 60
cancelTimeoutInMinutes: 5
steps:
- checkout: self
- template: security/policheck/v1.yml@xamarin-templates
- template: security/credscan/v2.yml@xamarin-templates
parameters:
suppressionsFile: $(System.DefaultWorkingDirectory)\build\automation\CredScanSuppressions.json
- task: securedevelopmentteam.vss-secure-development-tools.build-task-antimalware.AntiMalware@3
displayName: Run AntiMalware (Defender) Scan
inputs:
FileDirPath: $(System.DefaultWorkingDirectory)
EnableServices: true
condition: succeededOrFailed()
- task: securedevelopmentteam.vss-secure-development-tools.build-task-report.SdtReport@1
displayName: Create Security Analysis Report
inputs:
CredScan: true
PoliCheck: true
condition: succeededOrFailed()
- task: securedevelopmentteam.vss-secure-development-tools.build-task-publishsecurityanalysislogs.PublishSecurityAnalysisLogs@2
displayName: Publish Security Analysis Logs
inputs:
ArtifactName: CodeAnalysisLogs
condition: succeededOrFailed()
- task: securedevelopmentteam.vss-secure-development-tools.build-task-postanalysis.PostAnalysis@1
displayName: Fail Job if Security Issues are Detected
inputs:
CredScan: true
PoliCheck: true
condition: succeededOrFailed()
# - job: api_scan
# displayName: APIScan Compliance
# pool:
# name: $(corpVmImage)
# steps:
# - checkout: none
# clean: true
# - task: DownloadBuildArtifacts@0
# displayName: 'Download build artifact win_build'
# inputs:
# artifactName: win_build
# downloadPath: $(Build.StagingDirectory)
# - task: securedevelopmentteam.vss-secure-development-tools.build-task-apiscan.APIScan@2
# displayName: 'Run APIScan'
# inputs:
# softwareFolder: '$(Build.StagingDirectory)\win_build'
# softwareName: Xamarin.Forms
# softwareVersionNum: $(Build.BuildNumber)
# isLargeApp: false
# only sign using the private server and not sigining Maui for now
# - ${{ if and(eq(variables['System.TeamProject'], 'devdiv'), ne(variables['System.DefinitionId'], '13330')) }}:
# - stage: nuget_signing
# dependsOn: windows
# displayName: Sign Nuget
# jobs:
# - job: nuget_sign
# displayName: Sign Phase
# pool:
# name: $(signVmImage)
# demands:
# msbuild
# steps:
# - template: build/steps/build-sign.yml
# condition: and(succeeded(), ne(variables['signVmImage'], ''), or(eq(variables['Sign'], 'true'), or(eq(variables['Build.SourceBranch'], 'refs/heads/main'), startsWith(variables['Build.SourceBranch'],'refs/tags/'))))

Просмотреть файл

@ -0,0 +1,260 @@
<#
.SYNOPSIS
Runs adb commands to launch a Xamarin.Android project and time its
overall startup.
.DESCRIPTION
This will build & deploy the project, and by default launch the app 10
times. adb logcat messages are parsed and an average displayed.
.PARAMETER adb
Path to the adb executable. Will locate a default one installed by
Visual Studio 2019 and fall back to using the one found in $env:PATH.
.PARAMETER msbuild
Path to the msbuild executable. Will locate a default one installed by
Visual Studio 2019 and fall back to using the one found in $env:PATH.
.PARAMETER project
Path to a Xamarin.Android csproj file. Defaults to
HelloForms.Android.csproj in this repository.
.PARAMETER package
The package name of the app, found in AndroidManifest.xml. This value
is needed to launch or restart the app.
.PARAMETER configuration
The $(Configuration) MSBuild property. Defaults to 'Debug'.
.PARAMETER extra
Additional command-line arguments to pass to MSBuild. For example,
'-extra /p:AotAssemblies=True' would enable AOT.
.PARAMETER xamarinformsversion
The Xamarin.Forms version to run hello world on
.PARAMETER sleep
The number of seconds to wait between each app launch. Defaults to 3,
but you may need to increase for larger apps.
.PARAMETER iterations
The number of times to launch the app for profiling. Defaults to 10.
.PARAMETER androidapi
The android api to use when creating the emulator
.EXAMPLE
PS> profile-android.ps1
Will build and deploy HelloForms.Android.csproj, launch the
application 10 times and print the average time taken.
.EXAMPLE
PS> profile-android.ps1 -project .\Path\To\MyApp.csproj -package com.mycompany.myapp -iterations 3
Launching: com.mycompany.myapp
Launching: com.mycompany.myapp
Launching: com.mycompany.myapp
12-12 09:13:15.593 1876 1898 I ActivityManager: Displayed com.mycompany.myapp/crc6450e568c951913723.MainActivity: +1s501ms
12-12 09:13:19.696 1876 1898 I ActivityManager: Displayed com.mycompany.myapp/crc6450e568c951913723.MainActivity: +1s475ms
12-12 09:13:23.863 1876 1898 I ActivityManager: Displayed com.mycompany.myapp/crc6450e568c951913723.MainActivity: +1s564ms
Average(ms): 1513.33333333333
This would launch a different app with 3 iterations.
.EXAMPLE
PS> profile-android.ps1 -configuration Release -extra /p:AotAssemblies=True -androidapi android-28
This would test the app using a Release build and AOT.
#>
param
(
[string] $adb,
[string] $msbuild,
[string] $project,
[string] $package,
[string] $configuration = 'Debug',
[string] $extra,
[string] $xamarinformsversion = '4.7.0.1351',
[string] $androidapi = 'android-28',
[int] $sleep = 3,
[int] $iterations = 10
)
Function Get-Devices{
Param ($emulators, $androidapi)
if (-not $emulator)
{
$emulator = 'C:\Program Files (x86)\Android\android-sdk\emulator\emulator.exe'
if (-not (Test-Path $emulator))
{
Write-Host "We don't have emulator"
# emulator should be in $PATH on macOS
if($IsMacOS)
{
Write-Host "We are running macos"
$emulator = $null
}
}
}
$devices = & $adb devices
$noDevices = [string]::IsNullOrWhiteSpace(($devices -replace "List of Devices attached",""))
if ($noDevices)
{
Write-Host "No devices found"
if ($emulator)
{
Write-Host "Listing emulators"
& $emulator -list-avds
$emulators = & $emulator -list-avds
$emulatorsArray =$emulators.Split(" ")
Write-Host "number of emulators" $emulatorsArray.length
if($emulatorsArray.length -gt 0)
{
$index = 0
$emulatorToRun = $emulatorsArray[ $index]
Write-Host "Starting emulator $index from list - $emulatorToRun "
Start-Process -FilePath $emulator -ArgumentList "-avd $emulatorToRun"
Start-Job -ScriptBlock {
& $emulator -avd $emulatorToRun
}
}
else {
Write-Host "no emulators found"
}
}
elseif ($IsMacOS)
{
Write-Host "start emulator.sh"
Start-Process -FilePath emulator.sh $androidapi
}
}
else {
& $adb devices
}
}
Function Build-App{
Param ($project, $package)
if (-not $msbuild)
{
$msbuild = 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\MSBuild.exe'
if (-not (Test-Path $msbuild))
{
# msbuild should be in $PATH on macOS
$msbuild = 'msbuild'
}
}
if (-not $flutter)
{
# flutter should be in $PATH
$flutter = 'flutter'
}
$isFlutter = -not $project.EndsWith("csproj")
if(-not $isFlutter)
{
& $msbuild $project /v:minimal /nologo /restore /t:Clean,Install /p:Configuration=$configuration /p:XamarinFormsVersion=$xamarinformsversion $extra
}
else
{
Set-Location $project
Write-Host "Building flutter: $package"
& $flutter build apk --release
& $flutter install
}
}
$ErrorActionPreference = 'Stop'
# Input validation
if (-not $adb)
{
$adb = 'C:\Program Files (x86)\Android\android-sdk\platform-tools\adb.exe'
if (-not (Test-Path $adb))
{
Write-Host "doesnt exist adb"
# adb should be in $PATH on macOS
$adb = 'adb'
}
}
#Check if we have devices, or start a emulator
Get-Devices $emulator $androidapi
#Build App
Build-App $project $package
#We need a large logcat buffer
& $adb logcat -G 30M
& $adb logcat -c
for ($i = 1; $i -le $iterations; $i++)
{
Write-Host "Launching: $package"
& $adb shell am force-stop $package
& $adb shell monkey -p $package 1
# & $adb shell am start -n "$package/$package.MainActivity"
Start-Sleep -Seconds $sleep
}
# Log message of the form:
# 12-12 09:08:36.974 1876 1898 I ActivityManager: Displayed com.mycompany.myapp/crc6450e568c951913723.MainActivity: +1s540ms
$log = & $adb logcat -d | Select-String -Pattern 'Activity.*Manager.+Displayed'
if ($log.Count -eq 0)
{
Write-Error "No ActivityManager messages found"
}
$sum = 0;
[System.Collections.ArrayList] $times = @()
foreach ($line in $log)
{
if ($line -match "((?<seconds>\d+)s)?(?<milliseconds>\d+)ms(\s+\(total.+\))?$")
{
$seconds = [int]$Matches.seconds
$milliseconds = [int]$Matches.milliseconds
$time = $seconds * 1000 + $milliseconds
$times.Add($time) > $null
$sum += $time
Write-Host $line
}
else
{
Write-Error "No timing found for line: $line"
}
}
$mean = $sum / $log.Count
$variance = 0
if ($log.Count -ne 1)
{
foreach ($time in $times)
{
$variance += ($time - $mean) * ($time - $mean) / ($log.Count - 1)
}
}
$stdev = [math]::Sqrt($variance)
$stderr = $stdev / [math]::Sqrt($log.Count)
Write-Host "Average(ms): $mean"
Write-Host "Std Err(ms): $stderr"
Write-Host "Std Dev(ms): $stdev"

Просмотреть файл

@ -1,4 +1,4 @@
using System;
using System;
using Android.App;
using Android.Content;
using Android.Gms.Tasks;
@ -9,7 +9,7 @@ using Actions = Firebase.AppIndexing.Builders.Actions;
using GMSTask = Android.Gms.Tasks.Task;
using IndexingAction = Firebase.AppIndexing.IAction;
namespace Xamarin.Forms.Platform.Android.AppLinks
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android.AppLinks
{
[Preserve(AllMembers = true)]
public class AndroidAppLinks : IAppLinks, IDisposable

Просмотреть файл

@ -0,0 +1,29 @@
<Project Sdk="MSBuild.Sdk.Extras">
<PropertyGroup>
<Description>Android AppLinks support for Xamarin.Forms</Description>
<AssemblyName>Microsoft.Maui.Controls.Compatibility.Android.AppLinks</AssemblyName>
</PropertyGroup>
<PropertyGroup>
<TargetFrameworks>$(AndroidTargetFrameworks)</TargetFrameworks>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<RootNamespace>Microsoft.Maui.Controls.Compatibility.Android.AppLinks</RootNamespace>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)'=='Debug' ">
<DebugSymbols>true</DebugSymbols>
</PropertyGroup>
<ItemGroup>
<None Remove="Resources\values\Strings.xml" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\values\Strings.xml" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Xamarin.Firebase.AppIndexing" Version="119.1.0" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'MonoAndroid10.0'">
<ProjectReference Include="..\..\..\..\Controls\src\Core\Controls.Core.csproj" />
<PackageReference Include="Xamarin.AndroidX.Lifecycle.LiveData" />
<PackageReference Include="Xamarin.AndroidX.Legacy.Support.V4" />
</ItemGroup>
</Project>

Просмотреть файл

@ -0,0 +1,22 @@
using Android.Content;
using AActivity = Android.App.Activity;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android.AppLinks
{
internal static class ContextExtensions
{
public static AActivity GetActivity(this Context context)
{
if (context == null)
return null;
if (context is AActivity activity)
return activity;
if (context is ContextWrapper contextWrapper)
return contextWrapper.BaseContext.GetActivity();
return null;
}
}
}

Просмотреть файл

@ -0,0 +1,22 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net6.0-android</TargetFrameworks>
<RootNamespace>Microsoft.Maui.Controls.Android</RootNamespace>
<AssemblyName>Microsoft.Maui.Controls.Android.FormsViewGroup</AssemblyName>
<OutputType>Library</OutputType>
<Nullable>disable</Nullable>
</PropertyGroup>
<ItemGroup>
<Compile Remove="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedJar Include="Jars\formsviewgroup.jar" />
</ItemGroup>
<ItemGroup>
<Folder Include="Properties\" />
</ItemGroup>
<ItemGroup>
<TransformFile Include="Transforms\Metadata.xml" />
</ItemGroup>
</Project>

Просмотреть файл

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<AndroidCodeGenTarget>XAJavaInterop1</AndroidCodeGenTarget>
<RootNamespace>Microsoft.Maui.Controls.Android</RootNamespace>
</PropertyGroup>
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{3B72465B-ACAE-43AE-9327-10F372FE5F80}</ProjectGuid>
<ProjectTypeGuids>{10368E6C-D01B-4462-8E8B-01FC667A7035};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>FormsViewGroup</RootNamespace>
<AssemblyName>FormsViewGroup</AssemblyName>
<FileAlignment>512</FileAlignment>
<TargetFrameworkVersion>v10.0</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>portable</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<NoWarn>CS0109</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>portable</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<NoWarn>CS0109</NoWarn>
</PropertyGroup>
<ItemGroup>
<Reference Include="Mono.Android" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedJar Include="Jars\formsviewgroup.jar" />
</ItemGroup>
<ItemGroup>
<TransformFile Include="Transforms\Metadata.xml" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.Bindings.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

Просмотреть файл

@ -0,0 +1,6 @@
using System.Reflection;
using System.Runtime.InteropServices;
[assembly: AssemblyTitle ("FormsViewGroup")]
[assembly: AssemblyDescription ("")]
[assembly: ComVisible (false)]

Просмотреть файл

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8" ?>
<metadata>
<!--
This sample removes the class: android.support.v4.content.AsyncTaskLoader.LoadTask:
<remove-node path="/api/package[@name='android.support.v4.content']/class[@name='AsyncTaskLoader.LoadTask']" />
This sample removes the method: android.support.v4.content.CursorLoader.loadInBackground:
<remove-node path="/api/package[@name='android.support.v4.content']/class[@name='CursorLoader']/method[@name='loadInBackground']" />
-->
<attr path="/api/package[@name='com.xamarin.forms.platform.android']" name="managedName">Microsoft.Maui.Controls.Android</attr>
<attr path="/api/package[@name='com.xamarin.formsviewgroup']" name="managedName">Microsoft.Maui.Controls.Android</attr>
</metadata>

Просмотреть файл

@ -1,9 +1,9 @@
using System;
using System;
using System.Collections.Concurrent;
using Android.App;
using Android.Content;
namespace Xamarin.Forms.Platform.Android
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
public static class ActivityResultCallbackRegistry
{

Просмотреть файл

@ -0,0 +1,23 @@
using System;
using Android.Content;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
public class AndroidAppIndexProvider : IAppIndexingProvider
{
public AndroidAppIndexProvider(Context context)
{
var fullyQualifiedName = $"{AppLinksAssemblyName}.{AppLinksClassName}, {AppLinksAssemblyName}";
var type = Type.GetType(fullyQualifiedName, throwOnError: false);
if (type != null)
{
AppLinks = Activator.CreateInstance(type, new object[] { context }, null) as IAppLinks;
}
}
public IAppLinks AppLinks { get; }
const string AppLinksAssemblyName = "Microsoft.Maui.Controls.Compatibility.Platform.Android.AppLinks";
const string AppLinksClassName = "AndroidAppLinks";
}
}

Просмотреть файл

@ -0,0 +1,14 @@
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
internal enum AndroidApplicationLifecycleState
{
Uninitialized,
OnCreate,
OnStart,
OnResume,
OnPause,
OnStop,
OnRestart,
OnDestroy
}
}

Просмотреть файл

@ -2,11 +2,11 @@ using System;
using Android.Animation;
using Android.Content;
using Android.OS;
using Xamarin.Forms.Internals;
using Microsoft.Maui.Controls.Internals;
using GlobalSettings = Android.Provider.Settings.Global;
using SystemSettings = Android.Provider.Settings.System;
namespace Xamarin.Forms.Platform.Android
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
internal class AndroidTicker : Ticker, IDisposable
{

Просмотреть файл

@ -0,0 +1,8 @@
namespace Microsoft.Maui.Controls.Compatibility
{
public enum AndroidTitleBarVisibility
{
Default = 0,
Never = 1
}
}

Просмотреть файл

@ -0,0 +1,219 @@
using System;
using System.ComponentModel;
using Android.Content;
using Android.Graphics;
using Android.Util;
using Android.Views;
using AndroidX.AppCompat.Widget;
using Microsoft.Maui.Controls.PlatformConfiguration.AndroidSpecific;
using AColor = Android.Graphics.Color;
using AView = Android.Views.View;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat
{
public class ButtonRenderer : ViewRenderer<Button, AppCompatButton>,
AView.IOnAttachStateChangeListener, AView.IOnClickListener, AView.IOnTouchListener,
IBorderVisualElementRenderer, IButtonLayoutRenderer, IDisposedState
{
BorderBackgroundManager _backgroundTracker;
TextColorSwitcher _textColorSwitcher;
float _defaultFontSize;
Typeface _defaultTypeface;
bool _isDisposed;
ButtonLayoutManager _buttonLayoutManager;
public ButtonRenderer(Context context) : base(context)
{
AutoPackage = false;
_backgroundTracker = new BorderBackgroundManager(this);
_buttonLayoutManager = new ButtonLayoutManager(this);
}
global::Android.Widget.Button NativeButton => Control;
protected override void SetContentDescription()
=> base.SetContentDescription(false);
public override SizeRequest GetDesiredSize(int widthConstraint, int heightConstraint)
{
return _buttonLayoutManager.GetDesiredSize(widthConstraint, heightConstraint);
}
void AView.IOnAttachStateChangeListener.OnViewAttachedToWindow(AView attachedView) =>
_buttonLayoutManager?.OnViewAttachedToWindow(attachedView);
void AView.IOnAttachStateChangeListener.OnViewDetachedFromWindow(AView detachedView) =>
_buttonLayoutManager?.OnViewDetachedFromWindow(detachedView);
protected override void OnLayout(bool changed, int l, int t, int r, int b)
{
_buttonLayoutManager?.OnLayout(changed, l, t, r, b);
base.OnLayout(changed, l, t, r, b);
}
protected override AppCompatButton CreateNativeControl()
{
return new AppCompatButton(Context);
}
protected override void Dispose(bool disposing)
{
if (_isDisposed)
return;
_isDisposed = true;
if (disposing)
{
if (Control != null)
{
Control.SetOnClickListener(null);
Control.SetOnTouchListener(null);
Control.RemoveOnAttachStateChangeListener(this);
_textColorSwitcher = null;
}
_backgroundTracker?.Dispose();
_backgroundTracker = null;
_buttonLayoutManager?.Dispose();
_buttonLayoutManager = null;
}
base.Dispose(disposing);
}
protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
{
base.OnElementChanged(e);
if (e.NewElement != null)
{
if (Control == null)
{
AppCompatButton button = CreateNativeControl();
button.SetOnClickListener(this);
button.SetOnTouchListener(this);
button.AddOnAttachStateChangeListener(this);
_textColorSwitcher = new TextColorSwitcher(button.TextColors, e.NewElement.UseLegacyColorManagement());
SetNativeControl(button);
}
_defaultFontSize = 0f;
_buttonLayoutManager?.Update();
UpdateAll();
}
}
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (this.IsDisposed())
{
return;
}
if (e.PropertyName == Button.TextColorProperty.PropertyName)
UpdateTextColor();
else if (e.PropertyName == VisualElement.IsEnabledProperty.PropertyName)
UpdateEnabled();
else if (e.PropertyName == Button.FontProperty.PropertyName)
UpdateFont();
else if (e.PropertyName == Button.CharacterSpacingProperty.PropertyName)
UpdateCharacterSpacing();
base.OnElementPropertyChanged(sender, e);
}
[PortHandler]
protected override void UpdateBackgroundColor()
{
if (Element == null || Control == null)
return;
_backgroundTracker?.UpdateDrawable();
}
void UpdateAll()
{
UpdateFont();
UpdateTextColor();
UpdateEnabled();
UpdateBackgroundColor();
UpdateCharacterSpacing();
}
void UpdateEnabled()
{
Control.Enabled = Element.IsEnabled;
}
void UpdateFont()
{
Button button = Element;
Font font = button.Font;
if (font == Font.Default && _defaultFontSize == 0f)
return;
if (_defaultFontSize == 0f)
{
_defaultTypeface = NativeButton.Typeface;
_defaultFontSize = NativeButton.TextSize;
}
if (font == Font.Default)
{
NativeButton.Typeface = _defaultTypeface;
NativeButton.SetTextSize(ComplexUnitType.Px, _defaultFontSize);
}
else
{
NativeButton.Typeface = font.ToTypeface();
NativeButton.SetTextSize(ComplexUnitType.Sp, font.ToScaledPixel());
}
}
void UpdateTextColor()
{
_textColorSwitcher?.UpdateTextColor(Control, Element.TextColor);
}
void UpdateCharacterSpacing()
{
if (Forms.IsLollipopOrNewer)
{
NativeButton.LetterSpacing = Element.CharacterSpacing.ToEm();
}
}
void IOnClickListener.OnClick(AView v) => ButtonElementManager.OnClick(Element, Element, v);
bool IOnTouchListener.OnTouch(AView v, MotionEvent e) => ButtonElementManager.OnTouch(Element, Element, v, e);
float IBorderVisualElementRenderer.ShadowRadius => Control.ShadowRadius;
float IBorderVisualElementRenderer.ShadowDx => Control.ShadowDx;
float IBorderVisualElementRenderer.ShadowDy => Control.ShadowDy;
AColor IBorderVisualElementRenderer.ShadowColor => Control.ShadowColor;
bool IBorderVisualElementRenderer.UseDefaultPadding() => Element.OnThisPlatform().UseDefaultPadding();
bool IBorderVisualElementRenderer.UseDefaultShadow() => Element.OnThisPlatform().UseDefaultShadow();
bool IBorderVisualElementRenderer.IsShadowEnabled() => true;
VisualElement IBorderVisualElementRenderer.Element => Element;
AView IBorderVisualElementRenderer.View => Control;
event EventHandler<VisualElementChangedEventArgs> IBorderVisualElementRenderer.ElementChanged
{
add => ((IVisualElementRenderer)this).ElementChanged += value;
remove => ((IVisualElementRenderer)this).ElementChanged -= value;
}
event EventHandler<VisualElementChangedEventArgs> IButtonLayoutRenderer.ElementChanged
{
add => ((IVisualElementRenderer)this).ElementChanged += value;
remove => ((IVisualElementRenderer)this).ElementChanged -= value;
}
AppCompatButton IButtonLayoutRenderer.View => Control;
bool IDisposedState.IsDisposed => _isDisposed || !Control.IsAlive();
}
}

Просмотреть файл

@ -0,0 +1,194 @@
using System.Collections.Specialized;
using System.ComponentModel;
using Android.Content;
using Android.Views;
using AndroidX.Fragment.App;
using AndroidX.ViewPager.Widget;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat
{
public class CarouselPageRenderer : VisualElementRenderer<CarouselPage>, ViewPager.IOnPageChangeListener, IManageFragments
{
bool _disposed;
FormsViewPager _viewPager;
Page _previousPage;
FragmentManager _fragmentManager;
public CarouselPageRenderer(Context context) : base(context)
{
AutoPackage = false;
}
void ViewPager.IOnPageChangeListener.OnPageScrolled(int position, float positionOffset, int positionOffsetPixels)
{
}
void ViewPager.IOnPageChangeListener.OnPageScrollStateChanged(int state)
{
}
IPageController PageController => Element as IPageController;
FragmentManager FragmentManager => _fragmentManager ?? (_fragmentManager = Context.GetFragmentManager());
void IManageFragments.SetFragmentManager(FragmentManager childFragmentManager)
{
if (_fragmentManager == null)
_fragmentManager = childFragmentManager;
}
void ViewPager.IOnPageChangeListener.OnPageSelected(int position)
{
Element.CurrentPage = Element.Children[position];
if (_previousPage != Element.CurrentPage)
{
_previousPage?.SendDisappearing();
_previousPage = Element.CurrentPage;
}
Element.CurrentPage.SendAppearing();
}
protected override void Dispose(bool disposing)
{
if (disposing && !_disposed)
{
_disposed = true;
if (Element != null)
PageController.InternalChildren.CollectionChanged -= OnChildrenCollectionChanged;
if (_viewPager != null)
{
RemoveView(_viewPager);
_viewPager.ClearOnPageChangeListeners();
_viewPager.Adapter.Dispose();
_viewPager.Dispose();
_viewPager = null;
}
RemoveAllViews();
_previousPage = null;
_fragmentManager = null;
if (Element?.Children != null)
{
foreach (ContentPage pageToRemove in Element.Children)
{
IVisualElementRenderer pageRenderer = Platform.GetRenderer(pageToRemove);
if (pageRenderer != null)
{
pageRenderer.View.RemoveFromParent();
pageRenderer.Dispose();
}
pageToRemove.ClearValue(Platform.RendererProperty);
}
}
}
base.Dispose(disposing);
}
protected override void OnAttachedToWindow()
{
base.OnAttachedToWindow();
if (Parent is PageContainer pageContainer && (pageContainer.IsInFragment || pageContainer.Visibility == ViewStates.Gone))
return;
PageController.SendAppearing();
Element.CurrentPage?.SendAppearing();
}
protected override void OnDetachedFromWindow()
{
base.OnDetachedFromWindow();
if (Parent is PageContainer pageContainer && pageContainer.IsInFragment)
return;
Element.CurrentPage?.SendDisappearing();
PageController.SendDisappearing();
}
protected override void OnElementChanged(ElementChangedEventArgs<CarouselPage> e)
{
base.OnElementChanged(e);
var activity = (FormsAppCompatActivity)Context.GetActivity();
if (e.OldElement != null)
((IPageController)e.OldElement).InternalChildren.CollectionChanged -= OnChildrenCollectionChanged;
if (e.NewElement != null)
{
if (_viewPager != null)
{
_viewPager.RemoveOnPageChangeListener(this);
ViewGroup.RemoveView(_viewPager);
_viewPager.Dispose();
}
FormsViewPager pager = _viewPager = new FormsViewPager(activity)
{
OverScrollMode = OverScrollMode.Never,
EnableGesture = true,
LayoutParameters = new LayoutParams(LayoutParams.MatchParent, LayoutParams.MatchParent),
Adapter = new FormsFragmentPagerAdapter<ContentPage>(e.NewElement, FragmentManager) { CountOverride = e.NewElement.Children.Count }
};
pager.Id = Platform.GenerateViewId();
pager.AddOnPageChangeListener(this);
ViewGroup.AddView(pager);
CarouselPage carouselPage = e.NewElement;
if (carouselPage.CurrentPage != null)
{
_previousPage = carouselPage.CurrentPage;
ScrollToCurrentPage();
}
((IPageController)carouselPage).InternalChildren.CollectionChanged += OnChildrenCollectionChanged;
}
}
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
base.OnElementPropertyChanged(sender, e);
if (e.PropertyName == nameof(Element.CurrentPage))
ScrollToCurrentPage();
}
protected override void OnLayout(bool changed, int l, int t, int r, int b)
{
FormsViewPager pager = _viewPager;
Context context = Context;
int width = r - l;
int height = b - t;
pager.Measure(MeasureSpecFactory.MakeMeasureSpec(width, MeasureSpecMode.AtMost), MeasureSpecFactory.MakeMeasureSpec(height, MeasureSpecMode.AtMost));
if (width > 0 && height > 0)
{
PageController.ContainerArea = new Rectangle(0, 0, context.FromPixels(width), context.FromPixels(height));
pager.Layout(0, 0, width, b);
}
base.OnLayout(changed, l, t, r, b);
}
void OnChildrenCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
FormsViewPager pager = _viewPager;
((FormsFragmentPagerAdapter<ContentPage>)pager.Adapter).CountOverride = Element.Children.Count;
pager.Adapter.NotifyDataSetChanged();
}
void ScrollToCurrentPage()
{
_viewPager.SetCurrentItem(Element.Children.IndexOf(Element.CurrentPage), true);
}
}
}

Просмотреть файл

@ -0,0 +1,12 @@
using System;
using Android.Content;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
public class CheckBoxRenderer : CheckBoxRendererBase
{
public CheckBoxRenderer(Context context) : base(context)
{
}
}
}

Просмотреть файл

@ -0,0 +1,281 @@
using System;
using System.ComponentModel;
using Android.Content;
using Android.Content.Res;
using Android.Graphics;
using Android.Views;
using Android.Widget;
using AndroidX.AppCompat.Widget;
using AndroidX.Core.Widget;
using Microsoft.Maui.Controls.Internals;
using Microsoft.Maui.Controls.Compatibility.Platform.Android.FastRenderers;
using AAttribute = Android.Resource.Attribute;
using AColor = Android.Graphics.Color;
using AView = Android.Views.View;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
public class CheckBoxRendererBase :
AppCompatCheckBox,
IVisualElementRenderer,
AView.IOnFocusChangeListener,
CompoundButton.IOnCheckedChangeListener,
ITabStop
{
bool _disposed;
int? _defaultLabelFor;
VisualElementTracker _tracker;
VisualElementRenderer _visualElementRenderer;
IPlatformElementConfiguration<PlatformConfiguration.Android, CheckBox> _platformElementConfiguration;
CheckBox _checkBox;
static int[][] _checkedStates = new int[][]
{
new int[] { AAttribute.StateEnabled, AAttribute.StateChecked },
new int[] { AAttribute.StateEnabled, -AAttribute.StateChecked },
new int[] { -AAttribute.StateEnabled, AAttribute.StateChecked },
new int[] { -AAttribute.StateEnabled, -AAttribute.StatePressed },
};
public event EventHandler<VisualElementChangedEventArgs> ElementChanged;
public event EventHandler<PropertyChangedEventArgs> ElementPropertyChanged;
public CheckBoxRendererBase(Context context) : base(context) => Init();
public CheckBoxRendererBase(Context context, int defStyleAttr) : base(context, null, defStyleAttr) => Init();
void Init()
{
SoundEffectsEnabled = false;
SetOnCheckedChangeListener(this);
Tag = this;
OnFocusChangeListener = this;
this.SetClipToOutline(true);
}
protected override void Dispose(bool disposing)
{
if (_disposed)
return;
_disposed = true;
if (disposing)
{
_disposed = true;
_tracker?.Dispose();
_tracker = null;
SetOnCheckedChangeListener(null);
OnFocusChangeListener = null;
if (Element != null)
{
Element.PropertyChanged -= OnElementPropertyChanged;
if (AppCompat.Platform.GetRenderer(Element) == this)
{
Element.ClearValue(AppCompat.Platform.RendererProperty);
}
Element = null;
}
}
base.Dispose(disposing);
}
Size MinimumSize()
{
return Size.Zero;
}
SizeRequest IVisualElementRenderer.GetDesiredSize(int widthConstraint, int heightConstraint)
{
if (_disposed)
{
return new SizeRequest();
}
Measure(widthConstraint, heightConstraint);
return new SizeRequest(new Size(MeasuredWidth, MeasuredHeight), MinimumSize());
}
void IVisualElementRenderer.SetElement(VisualElement element)
{
if (element == null)
{
throw new ArgumentNullException(nameof(element));
}
if (!(element is CheckBox checkBox))
{
throw new ArgumentException("Element is not of type " + typeof(CheckBox), nameof(element));
}
CheckBox oldElement = Element;
Element = checkBox;
Performance.Start(out string reference);
if (oldElement != null)
{
oldElement.PropertyChanged -= OnElementPropertyChanged;
}
element.PropertyChanged += OnElementPropertyChanged;
if (_tracker == null)
{
_tracker = new VisualElementTracker(this);
}
if (_visualElementRenderer == null)
{
_visualElementRenderer = new VisualElementRenderer(this);
}
OnElementChanged(new ElementChangedEventArgs<CheckBox>(oldElement as CheckBox, Element));
Element?.SendViewInitialized(Control);
Performance.Stop(reference);
}
protected virtual void OnElementChanged(ElementChangedEventArgs<CheckBox> e)
{
if (e.NewElement != null && !_disposed)
{
this.EnsureId();
UpdateOnColor();
UpdateIsChecked();
UpdateBackgroundColor();
UpdateBackground();
}
ElementChanged?.Invoke(this, new VisualElementChangedEventArgs(e.OldElement, e.NewElement));
}
protected virtual void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (this.IsDisposed())
{
return;
}
if (e.PropertyName == CheckBox.ColorProperty.PropertyName)
{
UpdateOnColor();
}
else if (e.PropertyName == CheckBox.IsCheckedProperty.PropertyName)
{
UpdateIsChecked();
}
else if (e.PropertyName == VisualElement.BackgroundColorProperty.PropertyName)
{
UpdateBackgroundColor();
}
else if (e.PropertyName == VisualElement.BackgroundProperty.PropertyName)
{
UpdateBackground();
}
ElementPropertyChanged?.Invoke(this, e);
}
void IOnCheckedChangeListener.OnCheckedChanged(CompoundButton buttonView, bool isChecked)
{
((IElementController)Element).SetValueFromRenderer(CheckBox.IsCheckedProperty, isChecked);
}
void UpdateIsChecked()
{
if (Element == null || Control == null)
return;
Checked = Element.IsChecked;
}
protected virtual ColorStateList GetColorStateList()
{
var tintColor = Element.Color == Color.Default ? Color.Accent.ToAndroid() : Element.Color.ToAndroid();
var list = new ColorStateList(
_checkedStates,
new int[]
{
tintColor,
tintColor,
tintColor,
tintColor
});
return list;
}
void UpdateBackgroundColor()
{
if (Element.BackgroundColor == Color.Default)
SetBackgroundColor(AColor.Transparent);
else
SetBackgroundColor(Element.BackgroundColor.ToAndroid());
}
void UpdateBackground()
{
Brush background = Element.Background;
this.UpdateBackground(background);
}
void UpdateOnColor()
{
if (Element == null || Control == null)
return;
var mode = PorterDuff.Mode.SrcIn;
CompoundButtonCompat.SetButtonTintList(Control, GetColorStateList());
CompoundButtonCompat.SetButtonTintMode(Control, mode);
}
void IOnFocusChangeListener.OnFocusChange(AView v, bool hasFocus)
{
((IElementController)Element).SetValueFromRenderer(VisualElement.IsFocusedPropertyKey, hasFocus);
}
IPlatformElementConfiguration<PlatformConfiguration.Android, CheckBox> OnThisPlatform()
{
if (_platformElementConfiguration == null)
_platformElementConfiguration = Element.OnThisPlatform();
return _platformElementConfiguration;
}
public void SetLabelFor(int? id)
{
if (_defaultLabelFor == null)
_defaultLabelFor = LabelFor;
LabelFor = (int)(id ?? _defaultLabelFor);
}
void IVisualElementRenderer.UpdateLayout() => _tracker?.UpdateLayout();
VisualElement IVisualElementRenderer.Element => Element;
AView IVisualElementRenderer.View => this;
ViewGroup IVisualElementRenderer.ViewGroup => null;
VisualElementTracker IVisualElementRenderer.Tracker => _tracker;
protected CheckBox Element
{
get => _checkBox;
private set
{
_checkBox = value;
_platformElementConfiguration = null;
}
}
protected AppCompatCheckBox Control => this;
AView ITabStop.TabStop => this;
}
}

Просмотреть файл

@ -2,15 +2,15 @@ using Android.App;
using Android.Content;
using Android.Content.Res;
using Android.Views;
using Xamarin.Forms.Internals;
using Xamarin.Forms.Platform.Android.AppCompat;
using APlatform = Xamarin.Forms.Platform.Android.AppCompat.Platform;
using Microsoft.Maui.Controls.Internals;
using Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat;
using APlatform = Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat.Platform;
using Fragment = AndroidX.Fragment.App.Fragment;
using FragmentContainer = Xamarin.Forms.Platform.Android.AppCompat.FragmentContainer;
using FragmentContainer = Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat.FragmentContainer;
using FragmentManager = AndroidX.Fragment.App.FragmentManager;
using FragmentTransaction = AndroidX.Fragment.App.FragmentTransaction;
namespace Xamarin.Forms.Platform.Android
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
internal class FlyoutPageContainer : ViewGroup, IManageFragments
{

Просмотреть файл

@ -0,0 +1,508 @@
using System;
using System.ComponentModel;
using System.Threading.Tasks;
using Android.Content;
using Android.OS;
using Android.Views;
using AndroidX.DrawerLayout.Widget;
using AndroidX.Fragment.App;
using AView = Android.Views.View;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
using Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat;
using Microsoft.Maui.Controls.Compatibility.Platform.Android.FastRenderers;
public class FlyoutPageRenderer : DrawerLayout, IVisualElementRenderer, DrawerLayout.IDrawerListener, IManageFragments, ILifeCycleState
{
#region Statics
//from Android source code
const uint DefaultScrimColor = 0x99000000;
#endregion
int _currentLockMode = -1;
FlyoutPageContainer _detailLayout;
FlyoutPageContainer _flyoutLayout;
bool _disposed;
bool _isPresentingFromCore;
bool _presented;
bool _defaultAutomationSet;
VisualElementTracker _tracker;
FragmentManager _fragmentManager;
string _defaultContentDescription;
public FlyoutPageRenderer(Context context) : base(context)
{
}
FlyoutPage Element { get; set; }
IFlyoutPageController FlyoutPageController => Element as IFlyoutPageController;
bool Presented
{
get { return _presented; }
set
{
if (value == _presented)
return;
UpdateSplitViewLayout();
_presented = value;
if (Element.FlyoutLayoutBehavior == FlyoutLayoutBehavior.Default && FlyoutPageController.ShouldShowSplitMode)
return;
if (_presented)
OpenDrawer(_flyoutLayout);
else
CloseDrawer(_flyoutLayout);
}
}
IPageController FlyoutPagePageController => Element.Flyout as IPageController;
IPageController DetailPageController => Element.Detail as IPageController;
IPageController PageController => Element as IPageController;
void IDrawerListener.OnDrawerClosed(global::Android.Views.View drawerView)
{
}
void IDrawerListener.OnDrawerOpened(global::Android.Views.View drawerView)
{
}
void IDrawerListener.OnDrawerSlide(global::Android.Views.View drawerView, float slideOffset)
{
}
void IDrawerListener.OnDrawerStateChanged(int newState)
{
_presented = IsDrawerVisible(_flyoutLayout);
UpdateIsPresented();
}
void IManageFragments.SetFragmentManager(FragmentManager fragmentManager)
{
if (_fragmentManager == null)
_fragmentManager = fragmentManager;
}
VisualElement IVisualElementRenderer.Element => Element;
event EventHandler<VisualElementChangedEventArgs> IVisualElementRenderer.ElementChanged
{
add { ElementChanged += value; }
remove { ElementChanged -= value; }
}
event EventHandler<PropertyChangedEventArgs> IVisualElementRenderer.ElementPropertyChanged
{
add { ElementPropertyChanged += value; }
remove { ElementPropertyChanged -= value; }
}
SizeRequest IVisualElementRenderer.GetDesiredSize(int widthConstraint, int heightConstraint)
{
Measure(widthConstraint, heightConstraint);
return new SizeRequest(new Size(MeasuredWidth, MeasuredHeight));
}
void IVisualElementRenderer.SetElement(VisualElement element)
{
FlyoutPage oldElement = Element;
FlyoutPage newElement = Element = element as FlyoutPage;
if (oldElement != null)
{
Device.Info.PropertyChanged -= DeviceInfoPropertyChanged;
((IFlyoutPageController)oldElement).BackButtonPressed -= OnBackButtonPressed;
oldElement.PropertyChanged -= HandlePropertyChanged;
oldElement.Appearing -= FlyoutPageAppearing;
oldElement.Disappearing -= FlyoutPageDisappearing;
RemoveDrawerListener(this);
if (_detailLayout != null)
{
RemoveView(_detailLayout);
}
if (_flyoutLayout != null)
{
RemoveView(_flyoutLayout);
}
}
if (newElement != null)
{
if (_detailLayout == null)
{
_detailLayout = new FlyoutPageContainer(newElement, false, Context)
{
LayoutParameters = new LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent)
};
_flyoutLayout = new FlyoutPageContainer(newElement, true, Context)
{
LayoutParameters = new LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent) { Gravity = (int)GravityFlags.Start }
};
if (_fragmentManager != null)
{
_detailLayout.SetFragmentManager(_fragmentManager);
_flyoutLayout.SetFragmentManager(_fragmentManager);
}
AddView(_detailLayout);
AddView(_flyoutLayout);
Device.Info.PropertyChanged += DeviceInfoPropertyChanged;
AddDrawerListener(this);
}
UpdateBackgroundColor(newElement);
UpdateBackgroundImage(newElement);
UpdateFlyout();
UpdateDetail();
UpdateFlowDirection();
((IFlyoutPageController)newElement).BackButtonPressed += OnBackButtonPressed;
newElement.PropertyChanged += HandlePropertyChanged;
newElement.Appearing += FlyoutPageAppearing;
newElement.Disappearing += FlyoutPageDisappearing;
SetGestureState();
Presented = newElement.IsPresented;
newElement.SendViewInitialized(this);
}
OnElementChanged(oldElement, newElement);
// Make sure to initialize this AFTER event is fired
if (_tracker == null)
_tracker = new VisualElementTracker(this);
if (element != null && !string.IsNullOrEmpty(element.AutomationId))
SetAutomationId(element.AutomationId);
SetContentDescription();
}
void IVisualElementRenderer.SetLabelFor(int? id) => LabelFor = id ?? LabelFor;
VisualElementTracker IVisualElementRenderer.Tracker => _tracker;
void IVisualElementRenderer.UpdateLayout()
{
_tracker?.UpdateLayout();
}
ViewGroup IVisualElementRenderer.ViewGroup => this;
AView IVisualElementRenderer.View => this;
bool ILifeCycleState.MarkedForDispose { get; set; } = false;
void SetupAutomationDefaults()
{
if (!_defaultAutomationSet)
{
_defaultAutomationSet = true;
AutomationPropertiesProvider.SetupDefaults(this, ref _defaultContentDescription);
}
}
protected virtual void SetAutomationId(string id)
{
SetupAutomationDefaults();
AutomationPropertiesProvider.SetAutomationId(this, Element, id);
}
protected virtual void SetContentDescription()
{
SetupAutomationDefaults();
AutomationPropertiesProvider.SetContentDescription(this, Element, _defaultContentDescription, null);
}
protected override void Dispose(bool disposing)
{
if (_disposed)
return;
_disposed = true;
if (disposing)
{
Device.Info.PropertyChanged -= DeviceInfoPropertyChanged;
if (Element != null)
{
FlyoutPageController.BackButtonPressed -= OnBackButtonPressed;
Element.PropertyChanged -= HandlePropertyChanged;
Element.Appearing -= FlyoutPageAppearing;
Element.Disappearing -= FlyoutPageDisappearing;
}
if (_flyoutLayout?.ChildView != null)
_flyoutLayout.ChildView.PropertyChanged -= HandleFlyoutPropertyChanged;
if (!this.IsDisposed())
RemoveDrawerListener(this);
if (_tracker != null)
{
_tracker.Dispose();
_tracker = null;
}
if (_detailLayout != null)
{
RemoveView(_detailLayout);
_detailLayout.Dispose();
_detailLayout = null;
}
if (_flyoutLayout != null)
{
RemoveView(_flyoutLayout);
_flyoutLayout.Dispose();
_flyoutLayout = null;
}
if (Element != null)
{
Element.ClearValue(Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat.Platform.RendererProperty);
Element = null;
}
}
base.Dispose(disposing);
}
protected override void OnAttachedToWindow()
{
base.OnAttachedToWindow();
PageController.SendAppearing();
}
protected override void OnDetachedFromWindow()
{
base.OnDetachedFromWindow();
PageController?.SendDisappearing();
}
protected virtual void OnElementChanged(VisualElement oldElement, VisualElement newElement)
{
ElementChanged?.Invoke(this, new VisualElementChangedEventArgs(oldElement, newElement));
}
protected override void OnLayout(bool changed, int l, int t, int r, int b)
{
base.OnLayout(changed, l, t, r, b);
//hack to make the split layout handle touches the full width
if (FlyoutPageController.ShouldShowSplitMode && _flyoutLayout != null)
_flyoutLayout.Right = r;
}
async void DeviceInfoPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (nameof(Device.Info.CurrentOrientation) == e.PropertyName)
{
if (!FlyoutPageController.ShouldShowSplitMode && Presented)
{
FlyoutPageController.CanChangeIsPresented = true;
//hack : when the orientation changes and we try to close the Flyout on Android
//sometimes Android picks the width of the screen previous to the rotation
//this leaves a little of the flyout visible, the hack is to delay for 100ms closing the drawer
await Task.Delay(100);
//Renderer may have been disposed during the delay
if (_disposed)
{
return;
}
CloseDrawer(_flyoutLayout);
}
UpdateSplitViewLayout();
}
}
event EventHandler<VisualElementChangedEventArgs> ElementChanged;
event EventHandler<PropertyChangedEventArgs> ElementPropertyChanged;
bool HasAncestorNavigationPage(Element element)
{
if (element.Parent == null)
return false;
else if (element.Parent is NavigationPage)
return true;
else
return HasAncestorNavigationPage(element.Parent);
}
void HandleFlyoutPropertyChanged(object sender, PropertyChangedEventArgs e)
{
}
void HandlePropertyChanged(object sender, PropertyChangedEventArgs e)
{
ElementPropertyChanged?.Invoke(this, e);
if (e.PropertyName == "Flyout")
UpdateFlyout();
else if (e.PropertyName == "Detail")
UpdateDetail();
else if (e.PropertyName == FlyoutPage.IsGestureEnabledProperty.PropertyName)
SetGestureState();
else if (e.PropertyName == FlyoutPage.IsPresentedProperty.PropertyName)
{
_isPresentingFromCore = true;
Presented = Element.IsPresented;
_isPresentingFromCore = false;
}
else if (e.PropertyName == Page.BackgroundImageSourceProperty.PropertyName)
UpdateBackgroundImage(Element);
else if (e.PropertyName == VisualElement.BackgroundColorProperty.PropertyName)
UpdateBackgroundColor(Element);
else if (e.PropertyName == VisualElement.FlowDirectionProperty.PropertyName)
UpdateFlowDirection();
}
void FlyoutPageAppearing(object sender, EventArgs e)
{
FlyoutPagePageController?.SendAppearing();
DetailPageController?.SendAppearing();
}
void FlyoutPageDisappearing(object sender, EventArgs e)
{
FlyoutPagePageController?.SendDisappearing();
DetailPageController?.SendDisappearing();
}
void OnBackButtonPressed(object sender, BackButtonPressedEventArgs backButtonPressedEventArgs)
{
if (!IsDrawerOpen((int)GravityFlags.Start) || _currentLockMode == LockModeLockedOpen)
return;
CloseDrawer((int)GravityFlags.Start);
backButtonPressedEventArgs.Handled = true;
}
void SetGestureState()
{
SetDrawerLockMode(Element.IsGestureEnabled ? LockModeUnlocked : LockModeLockedClosed);
}
void SetLockMode(int lockMode)
{
if (_currentLockMode != lockMode)
{
SetDrawerLockMode(lockMode);
_currentLockMode = lockMode;
}
}
void UpdateBackgroundColor(Page view)
{
Color backgroundColor = view.BackgroundColor;
if (backgroundColor.IsDefault)
SetBackgroundColor(backgroundColor.ToAndroid());
}
void UpdateBackgroundImage(Page view)
{
_ = this.ApplyDrawableAsync(view, Page.BackgroundImageSourceProperty, Context, drawable =>
{
if (drawable != null)
this.SetBackground(drawable);
});
}
void UpdateDetail()
{
if (_detailLayout.ChildView == null)
Update();
else
// Queue up disposal of the previous renderers after the current layout updates have finished
new Handler(Looper.MainLooper).Post(Update);
void Update()
{
if (_detailLayout == null || _detailLayout.IsDisposed())
return;
Context.HideKeyboard(this);
_detailLayout.ChildView = Element.Detail;
}
}
void UpdateFlowDirection()
{
this.UpdateFlowDirection(Element);
_detailLayout.UpdateFlowDirection();
}
void UpdateIsPresented()
{
if (_isPresentingFromCore)
return;
if (Presented != Element.IsPresented)
((IElementController)Element).SetValueFromRenderer(FlyoutPage.IsPresentedProperty, Presented);
}
void UpdateFlyout()
{
if (_flyoutLayout.ChildView == null)
Update();
else
// Queue up disposal of the previous renderers after the current layout updates have finished
new Handler(Looper.MainLooper).Post(Update);
void Update()
{
if (_flyoutLayout == null || _flyoutLayout.IsDisposed())
return;
if (_flyoutLayout.ChildView != null)
_flyoutLayout.ChildView.PropertyChanged -= HandleFlyoutPropertyChanged;
_flyoutLayout.ChildView = Element.Flyout;
if (_flyoutLayout.ChildView != null)
_flyoutLayout.ChildView.PropertyChanged += HandleFlyoutPropertyChanged;
}
}
void UpdateSplitViewLayout()
{
if (Device.Idiom == TargetIdiom.Tablet)
{
bool isShowingSplit = FlyoutPageController.ShouldShowSplitMode || (FlyoutPageController.ShouldShowSplitMode && Element.FlyoutLayoutBehavior != FlyoutLayoutBehavior.Default && Element.IsPresented);
SetLockMode(isShowingSplit ? LockModeLockedOpen : LockModeUnlocked);
unchecked
{
SetScrimColor(isShowingSplit ? Color.Transparent.ToAndroid() : (int)DefaultScrimColor);
}
}
}
}
}
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat
{
public class MasterDetailPageRenderer : FlyoutPageRenderer
{
public MasterDetailPageRenderer(Context context) : base(context)
{
}
}
}

Просмотреть файл

@ -9,15 +9,15 @@ using Android.OS;
using Android.Runtime;
using Android.Views;
using AndroidX.AppCompat.App;
using Xamarin.Forms.Internals;
using Xamarin.Forms.Platform.Android.AppCompat;
using Xamarin.Forms.PlatformConfiguration.AndroidSpecific;
using Xamarin.Forms.PlatformConfiguration.AndroidSpecific.AppCompat;
using Microsoft.Maui.Controls.Internals;
using Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat;
using Microsoft.Maui.Controls.PlatformConfiguration.AndroidSpecific;
using Microsoft.Maui.Controls.PlatformConfiguration.AndroidSpecific.AppCompat;
using AColor = Android.Graphics.Color;
using ARelativeLayout = Android.Widget.RelativeLayout;
using AToolbar = AndroidX.AppCompat.Widget.Toolbar;
namespace Xamarin.Forms.Platform.Android
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
[Flags]
public enum ActivationFlags : long
@ -81,7 +81,7 @@ namespace Xamarin.Forms.Platform.Android
base.OnConfigurationChanged(newConfig);
ConfigurationChanged?.Invoke(this, new EventArgs());
Xamarin.Forms.Application.Current?.TriggerThemeChanged(new AppThemeChangedEventArgs(Xamarin.Forms.Application.Current.RequestedTheme));
Microsoft.Maui.Controls.Application.Current?.TriggerThemeChanged(new AppThemeChangedEventArgs(Microsoft.Maui.Controls.Application.Current.RequestedTheme));
}
public override bool OnOptionsItemSelected(IMenuItem item)
@ -147,10 +147,10 @@ namespace Xamarin.Forms.Platform.Android
((IApplicationController)application).SetAppIndexingProvider(new AndroidAppIndexProvider(this));
Profile.FramePartition("SetCurrentApplication");
Xamarin.Forms.Application.SetCurrentApplication(application);
Microsoft.Maui.Controls.Application.SetCurrentApplication(application);
Profile.FramePartition("SetSoftInputMode");
if (Xamarin.Forms.Application.Current.OnThisPlatform().GetWindowSoftInputModeAdjust() != WindowSoftInputModeAdjust.Unspecified)
if (Microsoft.Maui.Controls.Application.Current.OnThisPlatform().GetWindowSoftInputModeAdjust() != WindowSoftInputModeAdjust.Unspecified)
SetSoftInputMode();
Profile.FramePartition("CheckForAppLink");
@ -241,7 +241,7 @@ namespace Xamarin.Forms.Platform.Android
SetContentView(_layout);
Profile.FramePartition("OnStateChanged");
Xamarin.Forms.Application.ClearCurrent();
Microsoft.Maui.Controls.Application.ClearCurrent();
_previousState = _currentState;
_currentState = AndroidApplicationLifecycleState.OnCreate;
@ -502,9 +502,9 @@ namespace Xamarin.Forms.Platform.Android
{
var adjust = SoftInput.AdjustPan;
if (Xamarin.Forms.Application.Current != null)
if (Microsoft.Maui.Controls.Application.Current != null)
{
WindowSoftInputModeAdjust elementValue = Xamarin.Forms.Application.Current.OnThisPlatform().GetWindowSoftInputModeAdjust();
WindowSoftInputModeAdjust elementValue = Microsoft.Maui.Controls.Application.Current.OnThisPlatform().GetWindowSoftInputModeAdjust();
switch (elementValue)
{
case WindowSoftInputModeAdjust.Resize:

Просмотреть файл

@ -1,11 +1,13 @@
// error CS0618: 'FragmentStatePagerAdapter' is obsolete:
#pragma warning disable 618
using System.Collections.Generic;
using Android.OS;
using AndroidX.Fragment.App;
using Java.Lang;
using Xamarin.Forms.Internals;
using Microsoft.Maui.Controls.Internals;
using FragmentTransit = Android.App.FragmentTransit;
namespace Xamarin.Forms.Platform.Android.AppCompat
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat
{
internal class FormsFragmentPagerAdapter<T> : FragmentPagerAdapter where T : Page
{

Просмотреть файл

@ -5,7 +5,7 @@ using Android.Util;
using Android.Views;
using AndroidX.ViewPager.Widget;
namespace Xamarin.Forms.Platform.Android.AppCompat
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat
{
internal class FormsViewPager : ViewPager
{

Просмотреть файл

@ -4,10 +4,10 @@ using Android.OS;
using Android.Runtime;
using Android.Views;
using AndroidX.Fragment.App;
using Xamarin.Forms.PlatformConfiguration.AndroidSpecific.AppCompat;
using Microsoft.Maui.Controls.PlatformConfiguration.AndroidSpecific.AppCompat;
using AView = Android.Views.View;
namespace Xamarin.Forms.Platform.Android.AppCompat
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat
{
internal class FragmentContainer : Fragment
{

Просмотреть файл

@ -0,0 +1,14 @@
using Android.Content;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat
{
// This version of FrameRenderer is here for backward compatibility with anyone referencing
// FrameRenderer from this namespace
public class FrameRenderer : FastRenderers.FrameRenderer
{
public FrameRenderer(Context context) : base(context)
{
}
}
}

Просмотреть файл

@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@ -10,7 +10,7 @@ using Android.Runtime;
using Android.Views;
using Android.Widget;
namespace Xamarin.Forms.Platform.Android
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
internal interface ILifeCycleState
{

Просмотреть файл

@ -1,6 +1,6 @@
using AndroidX.Fragment.App;
namespace Xamarin.Forms.Platform.Android.AppCompat
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat
{
/// <summary>
/// Allows the platform to inject child fragment managers for renderers

Просмотреть файл

@ -0,0 +1,345 @@
using System;
using System.ComponentModel;
using Android.Content;
using Android.Graphics;
using Android.Graphics.Drawables;
using Android.Views;
using AndroidX.AppCompat.Widget;
using Microsoft.Maui.Controls.Internals;
using Microsoft.Maui.Controls.Compatibility.Platform.Android.FastRenderers;
using Microsoft.Maui.Controls.PlatformConfiguration.AndroidSpecific;
using AColor = Android.Graphics.Color;
using AView = Android.Views.View;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
public class ImageButtonRenderer :
AppCompatImageButton,
IVisualElementRenderer,
IBorderVisualElementRenderer,
IImageRendererController,
AView.IOnFocusChangeListener,
AView.IOnClickListener,
AView.IOnTouchListener,
ILayoutChanges,
IDisposedState
{
bool _hasLayoutOccurred;
bool _inputTransparent;
bool _disposed;
bool _skipInvalidate;
int? _defaultLabelFor;
VisualElementTracker _tracker;
VisualElementRenderer _visualElementRenderer;
BorderBackgroundManager _backgroundTracker;
IPlatformElementConfiguration<PlatformConfiguration.Android, ImageButton> _platformElementConfiguration;
ImageButton _imageButton;
public event EventHandler<VisualElementChangedEventArgs> ElementChanged;
public event EventHandler<PropertyChangedEventArgs> ElementPropertyChanged;
void IVisualElementRenderer.UpdateLayout() => _tracker?.UpdateLayout();
VisualElement IVisualElementRenderer.Element => Element;
AView IVisualElementRenderer.View => this;
ViewGroup IVisualElementRenderer.ViewGroup => null;
VisualElementTracker IVisualElementRenderer.Tracker => _tracker;
bool IDisposedState.IsDisposed => ((IImageRendererController)this).IsDisposed;
public ImageButton Element
{
get => _imageButton;
private set
{
_imageButton = value;
_platformElementConfiguration = null;
}
}
void IImageRendererController.SkipInvalidate() => _skipInvalidate = true;
bool IImageRendererController.IsDisposed => _disposed || !Control.IsAlive();
AppCompatImageButton Control => this;
public ImageButtonRenderer(Context context) : base(context)
{
// These set the defaults so visually it matches up with other platforms
SetPadding(0, 0, 0, 0);
SoundEffectsEnabled = false;
SetOnClickListener(this);
SetOnTouchListener(this);
OnFocusChangeListener = this;
// Setting the tag will break Glide
// Tag = this;
_backgroundTracker = new BorderBackgroundManager(this, false);
}
protected override void OnLayout(bool changed, int left, int top, int right, int bottom)
{
base.OnLayout(changed, left, top, right, bottom);
_hasLayoutOccurred = true;
}
protected override void Dispose(bool disposing)
{
if (_disposed)
return;
_disposed = true;
if (disposing)
{
if (Element != null)
{
Element.PropertyChanged -= OnElementPropertyChanged;
}
SetOnClickListener(null);
SetOnTouchListener(null);
OnFocusChangeListener = null;
ImageElementManager.Dispose(this);
_tracker?.Dispose();
_tracker = null;
_backgroundTracker?.Dispose();
_backgroundTracker = null;
if (Element != null)
{
if (AppCompat.Platform.GetRenderer(Element) == this)
{
Element.ClearValue(AppCompat.Platform.RendererProperty);
}
Element = null;
}
}
base.Dispose(disposing);
}
public override void Invalidate()
{
if (_skipInvalidate)
{
_skipInvalidate = false;
return;
}
base.Invalidate();
}
Size MinimumSize()
{
return new Size();
}
SizeRequest IVisualElementRenderer.GetDesiredSize(int widthConstraint, int heightConstraint)
{
if (_disposed)
{
return new SizeRequest();
}
Measure(widthConstraint, heightConstraint);
return new SizeRequest(new Size(MeasuredWidth, MeasuredHeight), MinimumSize());
}
void IVisualElementRenderer.SetElement(VisualElement element)
{
if (element == null)
{
throw new ArgumentNullException(nameof(element));
}
if (!(element is ImageButton image))
{
throw new ArgumentException("Element is not of type " + typeof(ImageButton), nameof(element));
}
ImageButton oldElement = Element;
Element = image;
Performance.Start(out string reference);
if (oldElement != null)
{
oldElement.PropertyChanged -= OnElementPropertyChanged;
}
element.PropertyChanged += OnElementPropertyChanged;
if (_tracker == null)
{
_tracker = new VisualElementTracker(this);
ImageElementManager.Init(this);
}
if (_visualElementRenderer == null)
{
_visualElementRenderer = new VisualElementRenderer(this);
}
Performance.Stop(reference);
this.EnsureId();
UpdateInputTransparent();
UpdatePadding();
OnElementChanged(new ElementChangedEventArgs<ImageButton>(oldElement, Element));
Element?.SendViewInitialized(Control);
}
protected virtual void OnElementChanged(ElementChangedEventArgs<ImageButton> e)
{
ElementChanged?.Invoke(this, new VisualElementChangedEventArgs(e.OldElement, e.NewElement));
}
public override void Draw(Canvas canvas)
{
if (Element == null)
return;
canvas.ClipShape(Context, Element);
var backgroundDrawable = _backgroundTracker?.BackgroundDrawable;
RectF drawableBounds = null;
if (Drawable != null)
{
if ((int)Forms.SdkInt >= 18 && backgroundDrawable != null)
{
var outlineBounds = backgroundDrawable.GetPaddingBounds(canvas.Width, canvas.Height);
var width = (float)canvas.Width;
var height = (float)canvas.Height;
var widthRatio = 1f;
var heightRatio = 1f;
if (Element.Aspect == Aspect.AspectFill && OnThisPlatform().GetIsShadowEnabled())
Internals.Log.Warning(nameof(ImageButtonRenderer), "AspectFill isn't fully supported when using shadows. Image may be clipped incorrectly to Border");
switch (Element.Aspect)
{
case Aspect.Fill:
break;
case Aspect.AspectFill:
case Aspect.AspectFit:
heightRatio = (float)Drawable.IntrinsicHeight / height;
widthRatio = (float)Drawable.IntrinsicWidth / width;
break;
}
drawableBounds = new RectF(outlineBounds.Left * widthRatio, outlineBounds.Top * heightRatio, outlineBounds.Right * widthRatio, outlineBounds.Bottom * heightRatio);
}
if (drawableBounds != null)
Drawable.SetBounds((int)drawableBounds.Left, (int)drawableBounds.Top, (int)drawableBounds.Right, (int)drawableBounds.Bottom);
}
if (_backgroundTracker?.BackgroundDrawable != null)
{
_backgroundTracker.BackgroundDrawable.DrawCircle(canvas, canvas.Width, canvas.Height, base.Draw);
_backgroundTracker.BackgroundDrawable.DrawOutline(canvas, canvas.Width, canvas.Height);
}
else
{
base.Draw(canvas);
}
}
void IVisualElementRenderer.SetLabelFor(int? id)
{
if (_defaultLabelFor == null)
_defaultLabelFor = LabelFor;
LabelFor = (int)(id ?? _defaultLabelFor);
}
public override bool OnTouchEvent(MotionEvent e)
{
if (!Enabled || (_inputTransparent && Enabled))
return false;
return base.OnTouchEvent(e);
}
void UpdatePadding()
{
SetPadding(
(int)(Context.ToPixels(Element.Padding.Left)),
(int)(Context.ToPixels(Element.Padding.Top)),
(int)(Context.ToPixels(Element.Padding.Right)),
(int)(Context.ToPixels(Element.Padding.Bottom))
);
}
void UpdateInputTransparent()
{
if (Element == null || _disposed)
{
return;
}
_inputTransparent = Element.InputTransparent;
}
protected virtual void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (this.IsDisposed())
{
return;
}
if (e.PropertyName == VisualElement.InputTransparentProperty.PropertyName)
UpdateInputTransparent();
else if (e.PropertyName == ImageButton.PaddingProperty.PropertyName)
UpdatePadding();
ElementPropertyChanged?.Invoke(this, e);
}
// general state related
void IOnFocusChangeListener.OnFocusChange(AView v, bool hasFocus)
{
((IElementController)Element).SetValueFromRenderer(VisualElement.IsFocusedPropertyKey, hasFocus);
}
// general state related
// Button related
void IOnClickListener.OnClick(AView v) =>
ButtonElementManager.OnClick(Element, Element, v);
bool IOnTouchListener.OnTouch(AView v, MotionEvent e) =>
ButtonElementManager.OnTouch(Element, Element, v, e);
// Button related
float IBorderVisualElementRenderer.ShadowRadius => Context.ToPixels(OnThisPlatform().GetShadowRadius());
float IBorderVisualElementRenderer.ShadowDx => Context.ToPixels(OnThisPlatform().GetShadowOffset().Width);
float IBorderVisualElementRenderer.ShadowDy => Context.ToPixels(OnThisPlatform().GetShadowOffset().Height);
AColor IBorderVisualElementRenderer.ShadowColor => OnThisPlatform().GetShadowColor().ToAndroid();
bool IBorderVisualElementRenderer.IsShadowEnabled() => OnThisPlatform().GetIsShadowEnabled();
bool IBorderVisualElementRenderer.UseDefaultPadding() => false;
bool IBorderVisualElementRenderer.UseDefaultShadow() => false;
VisualElement IBorderVisualElementRenderer.Element => Element;
AView IBorderVisualElementRenderer.View => this;
bool ILayoutChanges.HasLayoutOccurred => _hasLayoutOccurred;
IPlatformElementConfiguration<PlatformConfiguration.Android, ImageButton> OnThisPlatform()
{
if (_platformElementConfiguration == null)
_platformElementConfiguration = Element.OnThisPlatform();
return _platformElementConfiguration;
}
void IImageRendererController.SetFormsAnimationDrawable(IFormsAnimationDrawable value)
{
}
}
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,115 @@
using System;
using Android.Content;
using Android.OS;
using Android.Views;
using Fragment = AndroidX.Fragment.App.Fragment;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
public static class PageExtensions
{
class EmbeddedFragment : Fragment
{
readonly ViewGroup _content;
readonly AppCompat.Platform _platform;
bool _disposed;
// ReSharper disable once UnusedMember.Local (Android uses this on configuration change
public EmbeddedFragment()
{
}
public EmbeddedFragment(ViewGroup content, AppCompat.Platform platform)
{
_content = content;
_platform = platform;
}
public override global::Android.Views.View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
return _content;
}
protected override void Dispose(bool disposing)
{
if (_disposed)
{
return;
}
_disposed = true;
if (disposing)
{
(_platform as IDisposable)?.Dispose();
}
base.Dispose(disposing);
}
}
#pragma warning restore 618
public static Fragment CreateSupportFragment(this ContentPage view, Context context)
{
if (!Forms.IsInitialized)
throw new InvalidOperationException("call Forms.Init() before this");
if (!(view.RealParent is Application))
{
Application app = new DefaultApplication();
app.MainPage = view;
}
var platform = new AppCompat.Platform(context, true);
platform.SetPage(view);
var vg = platform.GetViewGroup();
return new EmbeddedSupportFragment(vg, platform);
}
class DefaultApplication : Application
{
}
class EmbeddedSupportFragment : Fragment
{
readonly ViewGroup _content;
readonly AppCompat.Platform _platform;
bool _disposed;
// ReSharper disable once UnusedMember.Local (Android uses this on configuration change
public EmbeddedSupportFragment()
{
}
public EmbeddedSupportFragment(ViewGroup content, AppCompat.Platform platform)
{
_content = content;
_platform = platform;
}
public override global::Android.Views.View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
return _content;
}
protected override void Dispose(bool disposing)
{
if (_disposed)
{
return;
}
_disposed = true;
if (disposing)
{
(_platform as IDisposable)?.Dispose();
}
base.Dispose(disposing);
}
}
}
}

Просмотреть файл

@ -0,0 +1,227 @@
using System;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Linq;
using Android.App;
using Android.Content;
using Android.Text;
using Android.Text.Style;
using Android.Util;
using Android.Widget;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat
{
public abstract class PickerRendererBase<TControl> : ViewRenderer<Picker, TControl>, IPickerRenderer
where TControl : global::Android.Views.View
{
AlertDialog _dialog;
bool _disposed;
EntryAccessibilityDelegate _pickerAccessibilityDelegate;
public PickerRendererBase(Context context) : base(context)
{
AutoPackage = false;
}
protected abstract EditText EditText { get; }
protected override void Dispose(bool disposing)
{
if (disposing && !_disposed)
{
_disposed = true;
((INotifyCollectionChanged)Element.Items).CollectionChanged -= RowsCollectionChanged;
_pickerAccessibilityDelegate?.Dispose();
_pickerAccessibilityDelegate = null;
}
base.Dispose(disposing);
}
protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
{
if (e.OldElement != null)
((INotifyCollectionChanged)e.OldElement.Items).CollectionChanged -= RowsCollectionChanged;
if (e.NewElement != null)
{
((INotifyCollectionChanged)e.NewElement.Items).CollectionChanged += RowsCollectionChanged;
if (Control == null)
{
var textField = CreateNativeControl();
SetNativeControl(textField);
ControlUsedForAutomation.SetAccessibilityDelegate(_pickerAccessibilityDelegate = new EntryAccessibilityDelegate(Element));
}
UpdateFont();
UpdatePicker();
UpdateTextColor();
UpdateCharacterSpacing();
UpdateGravity();
}
base.OnElementChanged(e);
}
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (this.IsDisposed())
{
return;
}
base.OnElementPropertyChanged(sender, e);
if (e.PropertyName == Picker.TitleProperty.PropertyName || e.PropertyName == Picker.TitleColorProperty.PropertyName)
UpdatePicker();
else if (e.PropertyName == Picker.SelectedIndexProperty.PropertyName)
UpdatePicker();
else if (e.PropertyName == Picker.CharacterSpacingProperty.PropertyName)
UpdateCharacterSpacing();
else if (e.PropertyName == Picker.TextColorProperty.PropertyName)
UpdateTextColor();
else if (e.PropertyName == Picker.FontAttributesProperty.PropertyName || e.PropertyName == Picker.FontFamilyProperty.PropertyName || e.PropertyName == Picker.FontSizeProperty.PropertyName)
UpdateFont();
else if (e.PropertyName == Picker.HorizontalTextAlignmentProperty.PropertyName || e.PropertyName == Picker.VerticalTextAlignmentProperty.PropertyName)
UpdateGravity();
}
protected override void OnFocusChangeRequested(object sender, VisualElement.FocusRequestArgs e)
{
base.OnFocusChangeRequested(sender, e);
if (e.Focus)
{
if (Clickable)
CallOnClick();
else
((IPickerRenderer)this)?.OnClick();
}
else if (_dialog != null)
{
_dialog.Hide();
((IElementController)Element).SetValueFromRenderer(VisualElement.IsFocusedPropertyKey, false);
Control.ClearFocus();
_dialog = null;
}
}
void IPickerRenderer.OnClick()
{
Picker model = Element;
if (_dialog == null)
{
using (var builder = new AlertDialog.Builder(Context))
{
if (!Element.IsSet(Picker.TitleColorProperty))
{
builder.SetTitle(model.Title ?? "");
}
else
{
var title = new SpannableString(model.Title ?? "");
title.SetSpan(new ForegroundColorSpan(model.TitleColor.ToAndroid()), 0, title.Length(), SpanTypes.ExclusiveExclusive);
builder.SetTitle(title);
}
string[] items = model.Items.ToArray();
builder.SetItems(items, (s, e) => ((IElementController)model).SetValueFromRenderer(Picker.SelectedIndexProperty, e.Which));
builder.SetNegativeButton(global::Android.Resource.String.Cancel, (o, args) => { });
((IElementController)Element).SetValueFromRenderer(VisualElement.IsFocusedPropertyKey, true);
_dialog = builder.Create();
}
_dialog.SetCanceledOnTouchOutside(true);
_dialog.DismissEvent += (sender, args) =>
{
(Element as IElementController)?.SetValueFromRenderer(VisualElement.IsFocusedPropertyKey, false);
_dialog?.Dispose();
_dialog = null;
};
_dialog.Show();
}
}
void RowsCollectionChanged(object sender, EventArgs e)
{
UpdatePicker();
}
void UpdateFont()
{
EditText.Typeface = Element.ToTypeface();
EditText.SetTextSize(ComplexUnitType.Sp, (float)Element.FontSize);
}
protected void UpdateCharacterSpacing()
{
if (Forms.IsLollipopOrNewer)
{
EditText.LetterSpacing = Element.CharacterSpacing.ToEm();
}
}
void UpdatePicker()
{
UpdatePlaceHolderText();
UpdateTitleColor();
if (Element.SelectedIndex == -1 || Element.Items == null || Element.SelectedIndex >= Element.Items.Count)
EditText.Text = null;
else
EditText.Text = Element.Items[Element.SelectedIndex];
_pickerAccessibilityDelegate.ValueText = EditText.Text;
}
abstract protected void UpdateTextColor();
abstract protected void UpdateTitleColor();
abstract protected void UpdatePlaceHolderText();
abstract protected void UpdateGravity();
}
public class PickerRenderer : PickerRendererBase<EditText>
{
TextColorSwitcher _textColorSwitcher;
TextColorSwitcher _hintColorSwitcher;
public PickerRenderer(Context context) : base(context)
{
}
protected override EditText CreateNativeControl()
{
return new PickerEditText(Context);
}
protected override EditText EditText => Control;
protected override void UpdateTitleColor()
{
_hintColorSwitcher = _hintColorSwitcher ?? new TextColorSwitcher(EditText.HintTextColors, Element.UseLegacyColorManagement());
_hintColorSwitcher.UpdateTextColor(EditText, Element.TitleColor, EditText.SetHintTextColor);
}
protected override void UpdateTextColor()
{
_textColorSwitcher = _textColorSwitcher ?? new TextColorSwitcher(EditText.TextColors, Element.UseLegacyColorManagement());
_textColorSwitcher.UpdateTextColor(EditText, Element.TextColor);
}
protected override void UpdatePlaceHolderText()
{
EditText.Hint = Element.Title;
}
protected override void UpdateGravity()
{
EditText.Gravity = Element.HorizontalTextAlignment.ToHorizontalGravityFlags() | Element.VerticalTextAlignment.ToVerticalGravityFlags();
}
}
}

Просмотреть файл

@ -0,0 +1,856 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Threading.Tasks;
using Android.Content;
using Android.OS;
using Android.Views;
using Android.Views.Animations;
using Microsoft.Maui.Controls.Internals;
using AView = Android.Views.View;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat
{
internal class Platform : BindableObject, IPlatformLayout, INavigation, IDisposable
{
readonly Context _context;
readonly PlatformRenderer _renderer;
bool _disposed;
bool _navAnimationInProgress;
NavigationModel _navModel = new NavigationModel();
NavigationModel _previousNavModel = null;
readonly bool _embedded;
internal static string PackageName { get; private set; }
internal static string GetPackageName() => PackageName;
internal const string CloseContextActionsSignalName = "Xamarin.CloseContextActions";
internal static readonly BindableProperty RendererProperty = BindableProperty.CreateAttached("Renderer", typeof(IVisualElementRenderer), typeof(Platform), default(IVisualElementRenderer),
propertyChanged: (bindable, oldvalue, newvalue) =>
{
var view = bindable as VisualElement;
if (view != null)
view.IsPlatformEnabled = newvalue != null;
});
public Platform(Context context) : this(context, false)
{
}
public Platform(Context context, bool embedded)
{
_embedded = embedded;
_context = context;
PackageName = context?.PackageName;
_renderer = new PlatformRenderer(context, this);
var activity = _context.GetActivity();
if (embedded && activity != null)
{
// Set up handling of DisplayAlert/DisplayActionSheet/UpdateProgressBarVisibility
if (_context == null)
{
// Can't show dialogs if it's not an activity
return;
}
PopupManager.Subscribe(_context.GetActivity());
return;
}
FormsAppCompatActivity.BackPressed += HandleBackPressed;
}
internal bool NavAnimationInProgress
{
get { return _navAnimationInProgress; }
set
{
if (_navAnimationInProgress == value)
return;
_navAnimationInProgress = value;
if (value)
MessagingCenter.Send(this, CloseContextActionsSignalName);
}
}
Page Page { get; set; }
IPageController CurrentPageController => _navModel.CurrentPage;
public void Dispose()
{
if (_disposed)
return;
_disposed = true;
FormsAppCompatActivity.BackPressed -= HandleBackPressed;
SetPage(null);
var activity = _context?.GetActivity();
if (_embedded && activity != null)
{
PopupManager.Unsubscribe(activity);
}
}
void INavigation.InsertPageBefore(Page page, Page before)
{
throw new InvalidOperationException("InsertPageBefore is not supported globally on Android, please use a NavigationPage.");
}
IReadOnlyList<Page> INavigation.ModalStack => _navModel.Modals.ToList();
IReadOnlyList<Page> INavigation.NavigationStack => new List<Page>();
Task<Page> INavigation.PopAsync()
{
return ((INavigation)this).PopAsync(true);
}
Task<Page> INavigation.PopAsync(bool animated)
{
throw new InvalidOperationException("PopAsync is not supported globally on Android, please use a NavigationPage.");
}
Task<Page> INavigation.PopModalAsync()
{
return ((INavigation)this).PopModalAsync(true);
}
Task<Page> INavigation.PopModalAsync(bool animated)
{
Page modal = _navModel.PopModal();
((IPageController)modal).SendDisappearing();
var source = new TaskCompletionSource<Page>();
IVisualElementRenderer modalRenderer = GetRenderer(modal);
if (modalRenderer != null)
{
var modalContainer = modalRenderer.View.Parent as ModalContainer;
if (animated)
{
modalContainer.Animate().TranslationY(_renderer.Height).SetInterpolator(new AccelerateInterpolator(1)).SetDuration(300).SetListener(new GenericAnimatorListener
{
OnEnd = a =>
{
modalContainer.RemoveFromParent();
modalContainer.Dispose();
source.TrySetResult(modal);
CurrentPageController?.SendAppearing();
modalContainer = null;
}
});
}
else
{
modalContainer.RemoveFromParent();
modalContainer.Dispose();
source.TrySetResult(modal);
CurrentPageController?.SendAppearing();
}
}
UpdateAccessibilityImportance(CurrentPageController as Page, ImportantForAccessibility.Auto, true);
return source.Task;
}
Task INavigation.PopToRootAsync()
{
return ((INavigation)this).PopToRootAsync(true);
}
Task INavigation.PopToRootAsync(bool animated)
{
throw new InvalidOperationException("PopToRootAsync is not supported globally on Android, please use a NavigationPage.");
}
Task INavigation.PushAsync(Page root)
{
return ((INavigation)this).PushAsync(root, true);
}
Task INavigation.PushAsync(Page root, bool animated)
{
throw new InvalidOperationException("PushAsync is not supported globally on Android, please use a NavigationPage.");
}
Task INavigation.PushModalAsync(Page modal)
{
return ((INavigation)this).PushModalAsync(modal, true);
}
async Task INavigation.PushModalAsync(Page modal, bool animated)
{
CurrentPageController?.SendDisappearing();
UpdateAccessibilityImportance(CurrentPageController as Page, ImportantForAccessibility.NoHideDescendants, false);
_navModel.PushModal(modal);
Task presentModal = PresentModal(modal, animated);
await presentModal;
UpdateAccessibilityImportance(modal, ImportantForAccessibility.Auto, true);
// Verify that the modal is still on the stack
if (_navModel.CurrentPage == modal)
((IPageController)modal).SendAppearing();
}
void INavigation.RemovePage(Page page)
{
throw new InvalidOperationException("RemovePage is not supported globally on Android, please use a NavigationPage.");
}
public static SizeRequest GetNativeSize(VisualElement view, double widthConstraint, double heightConstraint)
{
Performance.Start(out string reference);
IVisualElementRenderer visualElementRenderer = GetRenderer(view);
if (visualElementRenderer == null || visualElementRenderer.View.IsDisposed())
{
if (view is IView iView)
return new SizeRequest(iView.Handler.GetDesiredSize(widthConstraint, heightConstraint));
return new SizeRequest(Size.Zero, Size.Zero);
}
var context = visualElementRenderer.View.Context;
// negative numbers have special meanings to android they don't to us
widthConstraint = widthConstraint <= -1 ? double.PositiveInfinity : context.ToPixels(widthConstraint);
heightConstraint = heightConstraint <= -1 ? double.PositiveInfinity : context.ToPixels(heightConstraint);
bool widthConstrained = !double.IsPositiveInfinity(widthConstraint);
bool heightConstrained = !double.IsPositiveInfinity(heightConstraint);
int widthMeasureSpec = widthConstrained
? MeasureSpecFactory.MakeMeasureSpec((int)widthConstraint, MeasureSpecMode.AtMost)
: MeasureSpecFactory.MakeMeasureSpec(0, MeasureSpecMode.Unspecified);
int heightMeasureSpec = heightConstrained
? MeasureSpecFactory.MakeMeasureSpec((int)heightConstraint, MeasureSpecMode.AtMost)
: MeasureSpecFactory.MakeMeasureSpec(0, MeasureSpecMode.Unspecified);
SizeRequest rawResult = visualElementRenderer.GetDesiredSize(widthMeasureSpec, heightMeasureSpec);
if (rawResult.Minimum == Size.Zero)
rawResult.Minimum = rawResult.Request;
var result = new SizeRequest(new Size(context.FromPixels(rawResult.Request.Width), context.FromPixels(rawResult.Request.Height)),
new Size(context.FromPixels(rawResult.Minimum.Width), context.FromPixels(rawResult.Minimum.Height)));
if ((widthConstrained && result.Request.Width < widthConstraint)
|| (heightConstrained && result.Request.Height < heightConstraint))
{
// Do a final exact measurement in case the native control needs to fill the container
(visualElementRenderer as IViewRenderer)?.MeasureExactly();
}
Performance.Stop(reference);
return result;
}
public static void ClearRenderer(AView renderedView)
{
var element = (renderedView as IVisualElementRenderer)?.Element;
var view = element as View;
if (view != null)
{
var renderer = GetRenderer(view);
if (renderer == renderedView)
element.ClearValue(RendererProperty);
renderer?.Dispose();
renderer = null;
}
var layout = view as IVisualElementRenderer;
layout?.Dispose();
layout = null;
}
internal static IVisualElementRenderer CreateRenderer(VisualElement element, Context context)
{
IVisualElementRenderer renderer = null;
// temporary hack to fix the following issues
// https://github.com/xamarin/Microsoft.Maui.Controls.Compatibility/issues/13261
// https://github.com/xamarin/Microsoft.Maui.Controls.Compatibility/issues/12484
if (element is RadioButton tv && tv.ResolveControlTemplate() != null)
{
renderer = new DefaultRenderer(context);
}
// This code is duplicated across all platforms currently
// So if any changes are made here please make sure to apply them to other platform.cs files
if (renderer == null)
{
IViewHandler handler = null;
//TODO: Handle this with AppBuilderHost
try
{
handler = Forms.MauiContext.Handlers.GetHandler(element.GetType());
}
catch
{
// TODO define better catch response or define if this is needed?
}
if (handler == null)
{
renderer = Registrar.Registered.GetHandlerForObject<IVisualElementRenderer>(element, context)
?? new DefaultRenderer(context);
}
// This means the only thing registered is the RendererToHandlerShim
// Which is only used when you are running a .NET MAUI app
// This indicates that the user hasn't registered a specific handler for this given type
else if (handler is RendererToHandlerShim shim)
{
renderer = shim.VisualElementRenderer;
if (renderer == null)
{
renderer = Registrar.Registered.GetHandlerForObject<IVisualElementRenderer>(element, context)
?? new DefaultRenderer(context);
}
}
else if (handler is IVisualElementRenderer ver)
renderer = ver;
else if (handler is IAndroidViewHandler vh)
{
vh.SetContext(context);
renderer = new HandlerToRendererShim(vh);
}
}
renderer.SetElement(element);
return renderer;
}
internal static IVisualElementRenderer CreateRenderer(VisualElement element, AndroidX.Fragment.App.FragmentManager fragmentManager, Context context)
{
IVisualElementRenderer renderer = Registrar.Registered.GetHandlerForObject<IVisualElementRenderer>(element, context) ?? new DefaultRenderer(context);
var managesFragments = renderer as IManageFragments;
managesFragments?.SetFragmentManager(fragmentManager);
renderer.SetElement(element);
return renderer;
}
public static IVisualElementRenderer CreateRendererWithContext(VisualElement element, Context context)
{
// This is an interim method to allow public access to CreateRenderer(element, context), which we
// can't make public yet because it will break the previewer
return CreateRenderer(element, context);
}
public static IVisualElementRenderer GetRenderer(VisualElement bindable)
{
return (IVisualElementRenderer)bindable?.GetValue(RendererProperty);
}
public static void SetRenderer(VisualElement bindable, IVisualElementRenderer value)
{
bindable.SetValue(RendererProperty, value);
}
internal ViewGroup GetViewGroup()
{
return _renderer;
}
void IPlatformLayout.OnLayout(bool changed, int l, int t, int r, int b)
{
if (Page == null)
return;
if (changed)
{
LayoutRootPage(Page, r - l, b - t);
}
GetRenderer(Page)?.UpdateLayout();
for (var i = 0; i < _renderer.ChildCount; i++)
{
AView child = _renderer.GetChildAt(i);
if (child is ModalContainer)
{
child.Measure(MeasureSpecFactory.MakeMeasureSpec(r - l, MeasureSpecMode.Exactly), MeasureSpecFactory.MakeMeasureSpec(t - b, MeasureSpecMode.Exactly));
child.Layout(l, t, r, b);
}
}
}
protected override void OnBindingContextChanged()
{
SetInheritedBindingContext(Page, BindingContext);
base.OnBindingContextChanged();
}
internal void SettingNewPage()
{
if (Page != null)
{
_previousNavModel = _navModel;
_navModel = new NavigationModel();
}
}
internal void SetPage(Page newRoot)
{
if (Page == newRoot)
{
return;
}
if (Page != null)
{
var navModel = (_previousNavModel ?? _navModel);
foreach (var rootPage in navModel.Roots)
{
if (GetRenderer(rootPage) is ILifeCycleState nr)
nr.MarkedForDispose = true;
}
var viewsToRemove = new List<AView>();
var renderersToDispose = new List<IVisualElementRenderer>();
for (int i = 0; i < _renderer.ChildCount; i++)
viewsToRemove.Add(_renderer.GetChildAt(i));
foreach (var root in navModel.Roots)
renderersToDispose.Add(GetRenderer(root));
SetPageInternal(newRoot);
Cleanup(viewsToRemove, renderersToDispose);
}
else
{
SetPageInternal(newRoot);
}
}
void UpdateAccessibilityImportance(Page page, ImportantForAccessibility importantForAccessibility, bool forceFocus)
{
var pageRenderer = GetRenderer(page);
if (pageRenderer?.View == null)
return;
pageRenderer.View.ImportantForAccessibility = importantForAccessibility;
if (forceFocus)
pageRenderer.View.SendAccessibilityEvent(global::Android.Views.Accessibility.EventTypes.ViewFocused);
}
void SetPageInternal(Page newRoot)
{
var layout = false;
if (Page != null)
{
// if _previousNavModel has been set than _navModel has already been reinitialized
if (_previousNavModel != null)
{
_previousNavModel = null;
if (_navModel == null)
_navModel = new NavigationModel();
}
else
_navModel = new NavigationModel();
layout = true;
}
if (newRoot == null)
{
Page = null;
return;
}
_navModel.Push(newRoot, null);
Page = newRoot;
AddChild(Page, layout);
Application.Current.NavigationProxy.Inner = this;
}
void Cleanup(List<AView> viewsToRemove, List<IVisualElementRenderer> renderersToDispose)
{
// If trigger by dispose, cleanup now, otherwise queue it for later
if (_disposed)
{
DoCleanup();
}
else
{
new Handler(Looper.MainLooper).Post(DoCleanup);
}
void DoCleanup()
{
for (int i = 0; i < viewsToRemove.Count; i++)
{
AView view = viewsToRemove[i];
_renderer?.RemoveView(view);
}
for (int i = 0; i < renderersToDispose.Count; i++)
{
IVisualElementRenderer rootRenderer = renderersToDispose[i];
rootRenderer?.Element.ClearValue(RendererProperty);
rootRenderer?.Dispose();
}
}
}
void AddChild(Page page, bool layout = false)
{
if (page == null)
return;
if (GetRenderer(page) != null)
return;
IVisualElementRenderer renderView = CreateRenderer(page, _context);
SetRenderer(page, renderView);
if (layout)
LayoutRootPage(page, _renderer.Width, _renderer.Height);
_renderer.AddView(renderView.View);
}
bool HandleBackPressed(object sender, EventArgs e)
{
if (NavAnimationInProgress)
return true;
Page root = _navModel.Roots.LastOrDefault();
bool handled = root?.SendBackButtonPressed() ?? false;
return handled;
}
void LayoutRootPage(Page page, int width, int height)
{
page.Layout(new Rectangle(0, 0, _context.FromPixels(width), _context.FromPixels(height)));
}
Task PresentModal(Page modal, bool animated)
{
var modalContainer = new ModalContainer(_context, modal);
_renderer.AddView(modalContainer);
var source = new TaskCompletionSource<bool>();
NavAnimationInProgress = true;
if (animated)
{
modalContainer.TranslationY = _renderer.Height;
modalContainer.Animate().TranslationY(0).SetInterpolator(new DecelerateInterpolator(1)).SetDuration(300).SetListener(new GenericAnimatorListener
{
OnEnd = a =>
{
source.TrySetResult(false);
modalContainer = null;
},
OnCancel = a =>
{
source.TrySetResult(true);
modalContainer = null;
}
});
}
else
{
source.TrySetResult(true);
}
return source.Task.ContinueWith(task => NavAnimationInProgress = false);
}
sealed class ModalContainer : ViewGroup
{
AView _backgroundView;
bool _disposed;
Page _modal;
IVisualElementRenderer _renderer;
public ModalContainer(Context context, Page modal) : base(context)
{
_modal = modal;
_backgroundView = new AView(context);
UpdateBackgroundColor();
AddView(_backgroundView);
_renderer = CreateRenderer(modal, context);
SetRenderer(modal, _renderer);
AddView(_renderer.View);
Id = Platform.GenerateViewId();
_modal.PropertyChanged += OnModalPagePropertyChanged;
}
protected override void Dispose(bool disposing)
{
if (_disposed)
return;
if (disposing)
{
RemoveAllViews();
if (_renderer != null)
{
_renderer.Dispose();
_renderer = null;
_modal.ClearValue(RendererProperty);
_modal.PropertyChanged -= OnModalPagePropertyChanged;
_modal = null;
}
if (_backgroundView != null)
{
_backgroundView.Dispose();
_backgroundView = null;
}
}
_disposed = true;
base.Dispose(disposing);
}
protected override void OnLayout(bool changed, int l, int t, int r, int b)
{
if (changed)
{
_modal.Layout(new Rectangle(0, 0, Context.FromPixels(r - l), Context.FromPixels(b - t)));
_backgroundView.Layout(0, 0, r - l, b - t);
}
_renderer.UpdateLayout();
}
void OnModalPagePropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == Page.BackgroundColorProperty.PropertyName)
UpdateBackgroundColor();
}
void UpdateBackgroundColor()
{
Color modalBkgndColor = _modal.BackgroundColor;
if (modalBkgndColor.IsDefault)
_backgroundView.SetWindowBackground();
else
_backgroundView.SetBackgroundColor(modalBkgndColor.ToAndroid());
}
}
internal static int GenerateViewId()
{
// getting unique Id's is an art, and I consider myself the Jackson Pollock of the field
if ((int)Forms.SdkInt >= 17)
return global::Android.Views.View.GenerateViewId();
// Numbers higher than this range reserved for xml
// If we roll over, it can be exceptionally problematic for the user if they are still retaining things, android's internal implementation is
// basically identical to this except they do a lot of locking we don't have to because we know we only do this
// from the UI thread
if (s_id >= 0x00ffffff)
s_id = 0x00000400;
return s_id++;
}
static int s_id = 0x00000400;
#region Statics
public static implicit operator ViewGroup(Platform canvas)
{
return canvas._renderer;
}
#endregion
#region Previewer Stuff
internal static readonly BindableProperty PageContextProperty =
BindableProperty.CreateAttached("PageContext", typeof(Context), typeof(Platform), null);
internal static void SetPageContext(BindableObject bindable, Context context)
{
// Set a context for this page and its child controls
bindable.SetValue(PageContextProperty, context);
}
static Context GetPreviewerContext(Element element)
{
// Walk up the tree and find the Page this element is hosted in
Element parent = element;
while (!Application.IsApplicationOrNull(parent.RealParent))
{
parent = parent.RealParent;
}
// If a page is found, return the PageContext set by the previewer for that page (if any)
return (parent as Page)?.GetValue(PageContextProperty) as Context;
}
#endregion
internal class DefaultRenderer : VisualElementRenderer<View>, ILayoutChanges
{
public bool NotReallyHandled { get; private set; }
IOnTouchListener _touchListener;
bool _disposed;
bool _hasLayoutOccurred;
readonly MotionEventHelper _motionEventHelper = new MotionEventHelper();
public DefaultRenderer(Context context) : base(context)
{
ChildrenDrawingOrderEnabled = true;
}
internal void NotifyFakeHandling()
{
NotReallyHandled = true;
}
public override bool OnTouchEvent(MotionEvent e)
{
if (base.OnTouchEvent(e))
return true;
return _motionEventHelper.HandleMotionEvent(Parent, e);
}
protected override void OnElementChanged(ElementChangedEventArgs<View> e)
{
base.OnElementChanged(e);
_motionEventHelper.UpdateElement(e.NewElement);
}
public override bool DispatchTouchEvent(MotionEvent e)
{
#region Excessive explanation
// Normally dispatchTouchEvent feeds the touch events to its children one at a time, top child first,
// (and only to the children in the hit-test area of the event) stopping as soon as one of them has handled
// the event.
// But to be consistent across the platforms, we don't want this behavior; if an element is not input transparent
// we don't want an event to "pass through it" and be handled by an element "behind/under" it. We just want the processing
// to end after the first non-transparent child, regardless of whether the event has been handled.
// This is only an issue for a couple of controls; the interactive controls (switch, button, slider, etc) already "handle" their touches
// and the events don't propagate to other child controls. But for image, label, and box that doesn't happen. We can't have those controls
// lie about their events being handled because then the events won't propagate to *parent* controls (e.g., a frame with a label in it would
// never get a tap gesture from the label). In other words, we *want* parent propagation, but *do not want* sibling propagation. So we need to short-circuit
// base.DispatchTouchEvent here, but still return "false".
// Duplicating the logic of ViewGroup.dispatchTouchEvent and modifying it slightly for our purposes is a non-starter; the method is too
// complex and does a lot of micro-optimization. Instead, we provide a signalling mechanism for the controls which don't already "handle" touch
// events to tell us that they will be lying about handling their event; they then return "true" to short-circuit base.DispatchTouchEvent.
// The container gets this message and after it gets the "handled" result from dispatchTouchEvent,
// it then knows to ignore that result and return false/unhandled. This allows the event to propagate up the tree.
#endregion
NotReallyHandled = false;
var result = base.DispatchTouchEvent(e);
if (result && NotReallyHandled)
{
// If the child control returned true from its touch event handler but signalled that it was a fake "true", then we
// don't consider the event truly "handled" yet.
// Since a child control short-circuited the normal dispatchTouchEvent stuff, this layout never got the chance for
// IOnTouchListener.OnTouch and the OnTouchEvent override to try handling the touches; we'll do that now
// Any associated Touch Listeners are called from DispatchTouchEvents if all children of this view return false
// So here we are simulating both calls that would have typically been called from inside DispatchTouchEvent
// but were not called due to the fake "true"
result = _touchListener?.OnTouch(this, e) ?? false;
return result || OnTouchEvent(e);
}
return result;
}
public override void SetOnTouchListener(IOnTouchListener l)
{
_touchListener = l;
base.SetOnTouchListener(l);
}
protected override void Dispose(bool disposing)
{
if (_disposed)
{
return;
}
_disposed = true;
if (disposing)
SetOnTouchListener(null);
base.Dispose(disposing);
}
bool ILayoutChanges.HasLayoutOccurred => _hasLayoutOccurred;
protected override void OnLayout(bool changed, int left, int top, int right, int bottom)
{
base.OnLayout(changed, left, top, right, bottom);
_hasLayoutOccurred = true;
}
}
internal static string ResolveMsAppDataUri(Uri uri)
{
if (uri.Scheme == "ms-appdata")
{
string filePath = string.Empty;
if (uri.LocalPath.StartsWith("/local"))
{
filePath = System.IO.Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments), uri.LocalPath.Substring(7));
}
else if (uri.LocalPath.StartsWith("/temp"))
{
filePath = System.IO.Path.Combine(System.IO.Path.GetTempPath(), uri.LocalPath.Substring(6));
}
else
{
throw new ArgumentException("Invalid Uri", "Source");
}
return filePath;
}
else
{
throw new ArgumentException("uri");
}
}
}
}

Просмотреть файл

@ -0,0 +1,339 @@
using System;
using System.ComponentModel;
using Android.Content;
using Android.Graphics;
using Android.Util;
using Android.Views;
using Android.Widget;
using AndroidX.AppCompat.Widget;
using AndroidX.Core.View;
using Microsoft.Maui.Controls.Internals;
using Microsoft.Maui.Controls.Compatibility.Platform.Android.FastRenderers;
using AColor = Android.Graphics.Color;
using AView = Android.Views.View;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
public class RadioButtonRenderer : AppCompatRadioButton,
IBorderVisualElementRenderer, IVisualElementRenderer, IViewRenderer, ITabStop,
AView.IOnFocusChangeListener,
CompoundButton.IOnCheckedChangeListener
{
float _defaultFontSize;
int? _defaultLabelFor;
Typeface _defaultTypeface;
bool _isDisposed;
bool _inputTransparent;
Lazy<TextColorSwitcher> _textColorSwitcher;
AutomationPropertiesProvider _automationPropertiesProvider;
VisualElementTracker _tracker;
VisualElementRenderer _visualElementRenderer;
BorderBackgroundManager _backgroundTracker;
IPlatformElementConfiguration<PlatformConfiguration.Android, RadioButton> _platformElementConfiguration;
public event EventHandler<VisualElementChangedEventArgs> ElementChanged;
public event EventHandler<PropertyChangedEventArgs> ElementPropertyChanged;
public RadioButtonRenderer(Context context) : base(context)
{
Initialize();
}
protected RadioButton Element { get; set; }
protected AppCompatRadioButton Control => this;
VisualElement IBorderVisualElementRenderer.Element => Element;
VisualElement IVisualElementRenderer.Element => Element;
AView IVisualElementRenderer.View => this;
ViewGroup IVisualElementRenderer.ViewGroup => null;
VisualElementTracker IVisualElementRenderer.Tracker => _tracker;
AView ITabStop.TabStop => this;
void IOnFocusChangeListener.OnFocusChange(AView v, bool hasFocus)
{
((IElementController)Element).SetValueFromRenderer(VisualElement.IsFocusedPropertyKey, hasFocus);
}
SizeRequest IVisualElementRenderer.GetDesiredSize(int widthConstraint, int heightConstraint)
{
Measure(widthConstraint, heightConstraint);
return new SizeRequest(new Size(MeasuredWidth, MeasuredHeight));
}
void IVisualElementRenderer.SetElement(VisualElement element)
{
if (element == null)
{
throw new ArgumentNullException(nameof(element));
}
if (!(element is RadioButton))
{
throw new ArgumentException($"{nameof(element)} must be of type {nameof(RadioButton)}");
}
RadioButton oldElement = Element;
Element = (RadioButton)element;
Performance.Start(out string reference);
if (oldElement != null)
{
oldElement.PropertyChanged -= OnElementPropertyChanged;
}
element.PropertyChanged += OnElementPropertyChanged;
if (_tracker == null)
{
// Can't set up the tracker in the constructor because it access the Element (for now)
SetTracker(new VisualElementTracker(this));
}
if (_visualElementRenderer == null)
{
_visualElementRenderer = new VisualElementRenderer(this);
}
OnElementChanged(new ElementChangedEventArgs<RadioButton>(oldElement, Element));
SendVisualElementInitialized(element, this);
Performance.Stop(reference);
}
void IVisualElementRenderer.SetLabelFor(int? id)
{
if (_defaultLabelFor == null)
{
_defaultLabelFor = ViewCompat.GetLabelFor(this);
}
ViewCompat.SetLabelFor(this, (int)(id ?? _defaultLabelFor));
}
void IVisualElementRenderer.UpdateLayout() => _tracker?.UpdateLayout();
void IViewRenderer.MeasureExactly()
{
ViewRenderer.MeasureExactly(this, Element, Context);
}
protected override void Dispose(bool disposing)
{
if (_isDisposed)
{
return;
}
_isDisposed = true;
if (disposing)
{
SetOnClickListener(null);
SetOnTouchListener(null);
OnFocusChangeListener = null;
SetOnCheckedChangeListener(null);
if (Element != null)
{
Element.PropertyChanged -= OnElementPropertyChanged;
}
_automationPropertiesProvider?.Dispose();
_tracker?.Dispose();
_visualElementRenderer?.Dispose();
_backgroundTracker?.Dispose();
_backgroundTracker = null;
if (Element != null)
{
if (AppCompat.Platform.GetRenderer(Element) == this)
Element.ClearValue(AppCompat.Platform.RendererProperty);
}
}
base.Dispose(disposing);
}
public override bool OnTouchEvent(MotionEvent e)
{
if (!Enabled || (_inputTransparent && Enabled))
return false;
return base.OnTouchEvent(e);
}
protected virtual void OnElementChanged(ElementChangedEventArgs<RadioButton> e)
{
if (e.NewElement != null && !_isDisposed)
{
this.EnsureId();
_textColorSwitcher = new Lazy<TextColorSwitcher>(
() => new TextColorSwitcher(TextColors, e.NewElement.UseLegacyColorManagement()));
UpdateFont();
UpdateTextColor();
UpdateInputTransparent();
UpdateBackgroundColor();
UpdateIsChecked();
UpdateContent();
ElevationHelper.SetElevation(this, e.NewElement);
}
ElementChanged?.Invoke(this, new VisualElementChangedEventArgs(e.OldElement, e.NewElement));
}
protected virtual void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == RadioButton.TextColorProperty.PropertyName)
{
UpdateTextColor();
}
else if (e.IsOneOf(RadioButton.FontAttributesProperty, RadioButton.FontFamilyProperty, RadioButton.FontSizeProperty))
{
UpdateFont();
}
else if (e.PropertyName == VisualElement.InputTransparentProperty.PropertyName)
{
UpdateInputTransparent();
}
else if (e.PropertyName == RadioButton.IsCheckedProperty.PropertyName)
{
UpdateIsChecked();
}
else if (e.PropertyName == RadioButton.ContentProperty.PropertyName)
{
UpdateContent();
}
ElementPropertyChanged?.Invoke(this, e);
}
void SetTracker(VisualElementTracker tracker)
{
_tracker = tracker;
}
void UpdateBackgroundColor()
{
_backgroundTracker?.UpdateDrawable();
}
internal void OnNativeFocusChanged(bool hasFocus)
{
}
internal void SendVisualElementInitialized(VisualElement element, AView nativeView)
{
element.SendViewInitialized(nativeView);
}
void Initialize()
{
_automationPropertiesProvider = new AutomationPropertiesProvider(this);
_backgroundTracker = new BorderBackgroundManager(this);
SoundEffectsEnabled = false;
OnFocusChangeListener = this;
SetOnCheckedChangeListener(this);
Tag = this;
}
void UpdateFont()
{
if (Element == null || _isDisposed)
{
return;
}
Font font = Font.OfSize(Element.FontFamily, Element.FontSize).WithAttributes(Element.FontAttributes);
if (font == Font.Default && _defaultFontSize == 0f)
{
return;
}
if (_defaultFontSize == 0f)
{
_defaultTypeface = Typeface;
_defaultFontSize = TextSize;
}
if (font == Font.Default)
{
Typeface = _defaultTypeface;
SetTextSize(ComplexUnitType.Px, _defaultFontSize);
}
else
{
Typeface = font.ToTypeface();
SetTextSize(ComplexUnitType.Sp, font.ToScaledPixel());
}
}
void UpdateInputTransparent()
{
if (Element == null || _isDisposed)
{
return;
}
_inputTransparent = Element.InputTransparent;
}
void UpdateTextColor()
{
if (Element == null || _isDisposed || _textColorSwitcher == null)
{
return;
}
_textColorSwitcher.Value.UpdateTextColor(this, Element.TextColor);
}
void UpdateIsChecked()
{
if (Element == null || Control == null)
return;
Checked = ((RadioButton)Element).IsChecked;
}
void UpdateContent()
{
if (Element == null || Control == null)
{
return;
}
Control.Text = Element.ContentAsString();
}
void IOnCheckedChangeListener.OnCheckedChanged(CompoundButton buttonView, bool isChecked)
{
((IElementController)Element).SetValueFromRenderer(RadioButton.IsCheckedProperty, isChecked);
}
float IBorderVisualElementRenderer.ShadowRadius => ShadowRadius;
float IBorderVisualElementRenderer.ShadowDx => ShadowDx;
float IBorderVisualElementRenderer.ShadowDy => ShadowDy;
AColor IBorderVisualElementRenderer.ShadowColor => ShadowColor;
bool IBorderVisualElementRenderer.IsShadowEnabled() => true;
AView IBorderVisualElementRenderer.View => this;
IPlatformElementConfiguration<PlatformConfiguration.Android, RadioButton> OnThisPlatform()
{
if (_platformElementConfiguration == null)
_platformElementConfiguration = Element.OnThisPlatform();
return _platformElementConfiguration;
}
bool IBorderVisualElementRenderer.UseDefaultPadding() => true;
bool IBorderVisualElementRenderer.UseDefaultShadow() => true;
}
}

Просмотреть файл

@ -1,8 +1,8 @@
using Android.Runtime;
[assembly: ResourceDesigner("Xamarin.Forms.Platform.Android.Resource", IsApplication = false)]
[assembly: ResourceDesigner("Microsoft.Maui.Controls.Compatibility.Platform.Android.Resource", IsApplication = false)]
namespace Xamarin.Forms.Platform.Android
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
public class Resource
{

Просмотреть файл

@ -6,7 +6,7 @@ using Android.Views;
using AView = Android.Views.View;
using LP = Android.Views.ViewGroup.LayoutParams;
namespace Xamarin.Forms.Platform.Android.AppCompat
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat
{
internal class ShellFragmentContainer : FragmentContainer
{

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше