Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.27130.2027
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.28726.283
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Xamarin.Forms", "Xamarin.Forms", "{9AD757F5-E57A-459D-A0A7-E0675E045B84}"
EndProject
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Core.Design", "Xamarin.Forms.Core.Design\Xamarin.Forms.Core.Design.csproj", "{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Maps.Design", "Xamarin.Forms.Maps.Design\Xamarin.Forms.Maps.Design.csproj", "{C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Xaml.Design", "Xamarin.Forms.Xaml.Design\Xamarin.Forms.Xaml.Design.csproj", "{65BC4888-CC59-428A-9B75-540CF1C09480}"
EndProject
Global
{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
- {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Debug|ARM.Build.0 = Debug|Any CPU
- {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Debug|iPhone.ActiveCfg = Debug|Any CPU
- {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Debug|iPhone.Build.0 = Debug|Any CPU
- {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
- {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
- {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Debug|x64.ActiveCfg = Debug|Any CPU
- {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Debug|x64.Build.0 = Debug|Any CPU
- {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Debug|x86.ActiveCfg = Debug|Any CPU
- {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Debug|x86.Build.0 = Debug|Any CPU
- {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Release|Any CPU.Build.0 = Release|Any CPU
- {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Release|ARM.ActiveCfg = Release|Any CPU
- {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Release|ARM.Build.0 = Release|Any CPU
- {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Release|iPhone.ActiveCfg = Release|Any CPU
- {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Release|iPhone.Build.0 = Release|Any CPU
- {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
- {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Release|x64.ActiveCfg = Release|Any CPU
- {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Release|x64.Build.0 = Release|Any CPU
- {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.Release|x86.ActiveCfg = Release|Any CPU
- {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87}.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
{C9696465-7657-4843-872E-3C01891C4A9B} = {9AD757F5-E57A-459D-A0A7-E0675E045B84}
{D31A6537-ED9C-4EBD-B231-A8D4FE44126A} = {29AC50BF-B4FB-450B-9386-0C5AD4B84226}
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF} = {9AD757F5-E57A-459D-A0A7-E0675E045B84}
- {C4340D4E-BDDB-4053-BFBC-CF4F043FAE87} = {132FB9A4-613F-44CE-95D5-758D32D231DD}
{65BC4888-CC59-428A-9B75-540CF1C09480} = {32F608E2-6406-4DCF-9105-E2A7CB7085CF}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
rem stub uncommon targets
set NUGET_EXE=%NUGET_DIR%NuGet.exe
-mkdir Xamarin.Forms.Platform.MacOS\bin\debug\
-mkdir Xamarin.Forms.Platform.Tizen\bin\debug\tizen40\
-mkdir Xamarin.Forms.Maps.Tizen\bin\debug\Tizen40
-mkdir Xamarin.Forms.Maps.MacOS\bin\debug
-mkdir Xamarin.Forms.Platform.UAP\bin\debug\
-mkdir Xamarin.Forms.Platform.ios\bin\debug\
-mkdir Stubs\Xamarin.Forms.Platform.iOS\bin\iPhone\debug\
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\ar
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\ca
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\cs
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\da
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\de
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\el
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\es
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\fi
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\fr
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\he
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\hi
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\hr
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\hu
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\id
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\it
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\ja
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\ko
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\ms
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\nb
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\nl
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\pl
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\pt-BR
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\pt
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\ro
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\ru
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\sk
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\sv
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\th
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\tr
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\uk
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\vi
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\zh-Hans
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\zh-Hant
-mkdir Xamarin.Forms.Platform.iOS\bin\debug\zh-HK
-
-mkdir Xamarin.Forms.Platform.Android\bin\debug
-echo foo > Xamarin.Forms.Platform.Android\bin\debug\Xamarin.Forms.Platform.Android.dll
-
-mkdir Xamarin.Forms.Platform.Android.FormsViewGroup\bin\debug
-echo foo > Xamarin.Forms.Platform.Android.FormsViewGroup\bin\debug\FormsViewGroup.dll
-
-mkdir Stubs\Xamarin.Forms.Platform.Android\bin\debug
-echo foo > Stubs\Xamarin.Forms.Platform.Android\bin\debug\Xamarin.Forms.Platform.dll
-
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\ar\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\ca\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\cs\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\da\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\de\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\el\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\es\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\fi\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\fr\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\he\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\hi\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\hr\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\hu\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\id\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\it\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\ja\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\ko\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\ms\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\nb\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\nl\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\pl\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\pt-BR\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\pt\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\ro\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\ru\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\sk\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\sv\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\th\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\tr\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\uk\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\vi\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\zh-Hans\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\zh-Hant\Xamarin.Forms.Platform.iOS.resources.dll
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\zh-HK\Xamarin.Forms.Platform.iOS.resources.dll
-
-echo foo > Xamarin.Forms.Platform.iOS\bin\debug\Xamarin.Forms.Platform.iOS.dll
-echo foo > Stubs\Xamarin.Forms.Platform.iOS\bin\iPhone\debug\Xamarin.Forms.Platform.dll
-
-echo foo > Xamarin.Forms.Platform.MacOS\bin\debug\Xamarin.forms.Platform.macOS.dll
-echo foo > Xamarin.Forms.Platform.MacOS\bin\debug\Xamarin.forms.Platform.dll
-echo foo > Xamarin.Forms.Maps.MacOS\bin\debug\Xamarin.Forms.Maps.macOS.dll
-
-mkdir Stubs\Xamarin.Forms.Platform.Tizen\bin\debug\tizen40
-echo foo > Stubs\Xamarin.Forms.Platform.Tizen\bin\debug\tizen40\Xamarin.Forms.Platform.dll
-echo foo > Xamarin.Forms.Maps.Tizen\bin\debug\Tizen40\Xamarin.Forms.Maps.Tizen.dll
-
-mkdir Xamarin.Forms.Platform.Tizen\bin\debug\tizen40
-echo foo > Xamarin.Forms.Platform.Tizen\bin\debug\tizen40\Xamarin.forms.Platform.tizen.dll
-echo foo > Xamarin.Forms.Platform.Tizen\bin\debug\tizen40\Xamarin.forms.Platform.dll
-
-mkdir Xamarin.Forms.Platform.UAP\bin\debug\
-echo foo > Xamarin.Forms.Platform.UAP\bin\debug\Xamarin.Forms.Platform.UAP.dll
-echo foo > Xamarin.Forms.Platform.UAP\bin\debug\Xamarin.Forms.Platform.UAP.pri
-echo foo > Xamarin.Forms.Platform.UAP\bin\debug\Xamarin.Forms.Platform.UAP.xr.xml
-echo foo > Xamarin.Forms.Platform.UAP\bin\debug\FormsProgressBarStyle.xbf
-echo foo > Xamarin.Forms.Platform.UAP\bin\debug\FormsFlyout.xbf
-echo foo > Xamarin.Forms.Platform.UAP\bin\debug\FormsCommandBarStyle.xbf
-echo foo > Xamarin.Forms.Platform.UAP\bin\debug\Resources.xbf
-echo foo > Xamarin.Forms.Platform.UAP\bin\debug\FormsTextBoxStyle.xbf
-echo foo > Xamarin.Forms.Platform.UAP\bin\debug\AutoSuggestStyle.xbf
-echo foo > Xamarin.Forms.Platform.UAP\bin\debug\SliderStyle.xbf
-echo foo > Xamarin.Forms.Platform.UAP\bin\debug\MasterDetailControlStyle.xbf
-echo foo > Xamarin.Forms.Platform.UAP\bin\debug\PageControlStyle.xbf
-echo foo > Xamarin.Forms.Platform.UAP\bin\debug\TabbedPageStyle.xbf
-echo foo > Xamarin.Forms.Platform.UAP\bin\debug\FormsEmbeddedPageWrapper.xbf
-echo foo > Xamarin.Forms.Platform.UAP\bin\debug\StepperControl.xbf
-
-mkdir Xamarin.Forms.Platform.UAP\bin\debug\Items
-echo foo > Xamarin.Forms.Platform.UAP\bin\debug\Items\ItemsViewStyles.xbf
-
if "%1" == "droid" (
+ set CONFIG=debug
+ call .create-stubs.bat
%NUGET_EXE% restore .xamarin.forms.android.nuget.sln
msbuild /v:m /p:platform="any cpu" /p:WarningLevel=0 /p:CreateAllAndroidTargets=true .xamarin.forms.android.nuget.sln
)
+if "%1" == "rdroid" (
+ set CONFIG=release
+ call .create-stubs.bat
+ %NUGET_EXE% restore .xamarin.forms.android.nuget.sln
+ msbuild /v:m /p:configuration=release /p:platform="any cpu" /p:WarningLevel=0 /p:CreateAllAndroidTargets=true .xamarin.forms.android.nuget.sln
+)
+if "%1" == "pdroid" (
+ set CONFIG=release
+ msbuild /v:m /p:configuration=release /p:platform="anyCpu" /p:WarningLevel=0 /p:CreateAllAndroidTargets=true Xamarin.Forms.Platform.Android\Xamarin.Forms.Platform.Android.csproj
+)
if "%1" == "ios" (
+ set CONFIG=debug
+ call .create-stubs.bat
%NUGET_EXE% restore .xamarin.forms.ios.nuget.sln
msbuild /v:m /p:platform="any cpu" .xamarin.forms.ios.nuget.sln
)
if "%1" == "droidios" (
+ set CONFIG=debug
+ call .create-stubs.bat
%NUGET_EXE% restore .xamarin.forms.android.nuget.sln
%NUGET_EXE% restore .xamarin.forms.ios.nuget.sln
msbuild /v:m /p:platform="any cpu" /p:WarningLevel=0 .xamarin.forms.android.nuget.sln
msbuild /v:m /p:platform="any cpu" .xamarin.forms.ios.nuget.sln
)
if "%1" == "uap" (
+ set CONFIG=debug
+ call .create-stubs.bat
%NUGET_EXE% restore .xamarin.forms.uap.nuget.sln
msbuild /v:m /p:platform="any cpu" .xamarin.forms.uap.nuget.sln /t:restore
msbuild /v:m /p:platform="any cpu" .xamarin.forms.uap.nuget.sln
)
if "%1" == "all" (
+ set CONFIG=debug
+ call .create-stubs.bat
%NUGET_EXE% restore .xamarin.forms.sln
msbuild /v:m /p:platform="any cpu" .xamarin.forms.uap.nuget.sln /t:restore
msbuild /v:m /p:platform="any cpu" /p:WarningLevel=0 /p:CreateAllAndroidTargets=true .xamarin.forms.nuget.sln
if "%DEBUG_VERSION%"=="" set DEBUG_VERSION=0
set /a DEBUG_VERSION=%DEBUG_VERSION%+1
pushd .nuspec
-%NUGET_EXE% pack Xamarin.Forms.nuspec -properties configuration=debug;platform=anycpu -Version 9.9.%DEBUG_VERSION%
+%NUGET_EXE% pack Xamarin.Forms.nuspec -properties configuration=%CONFIG%;platform=anycpu -Version 9.9.%DEBUG_VERSION%
if "%CREATE_MAP_NUGET%" NEQ "" (
REM Requires building x86, x64, AMD
- %NUGET_EXE% pack Xamarin.Forms.Maps.nuspec -properties configuration=debug;platform=anycpu -Version 9.9.%DEBUG_VERSION%
+ %NUGET_EXE% pack Xamarin.Forms.Maps.nuspec -properties configuration=%CONFIG%;platform=anycpu -Version 9.9.%DEBUG_VERSION%
)
popd
--- /dev/null
+rem This is not our official nuget build script.
+rem This is used as a quick and dirty way create nuget packages used to test user issue reproductions.
+rem This is updated as XF developers use it to test reproductions. As such, it may not always work.
+rem This is not ideal, but it's better than nothing, and it usually works fine.
+
+mkdir Xamarin.Forms.Platform.MacOS\bin\%CONFIG%\
+mkdir Xamarin.Forms.Platform.Tizen\bin\%CONFIG%\tizen40\
+mkdir Xamarin.Forms.Maps.Tizen\bin\%CONFIG%\Tizen40
+mkdir Xamarin.Forms.Maps.MacOS\bin\%CONFIG%
+mkdir Xamarin.Forms.Platform.UAP\bin\%CONFIG%\
+mkdir Xamarin.Forms.Platform.ios\bin\%CONFIG%\
+mkdir Stubs\Xamarin.Forms.Platform.iOS\bin\iPhone\%CONFIG%\
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\ar
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\ca
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\cs
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\da
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\de
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\el
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\es
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\fi
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\fr
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\he
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\hi
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\hr
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\hu
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\id
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\it
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\ja
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\ko
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\ms
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\nb
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\nl
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\pl
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\pt-BR
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\pt
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\ro
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\ru
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\sk
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\sv
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\th
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\tr
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\uk
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\vi
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\zh-Hans
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\zh-Hant
+mkdir Xamarin.Forms.Platform.iOS\bin\%CONFIG%\zh-HK
+
+mkdir Xamarin.Forms.Platform.Android\bin\%CONFIG%
+echo foo > Xamarin.Forms.Platform.Android\bin\%CONFIG%\Xamarin.Forms.Platform.Android.dll
+
+mkdir Xamarin.Forms.Platform.Android.FormsViewGroup\bin\%CONFIG%
+echo foo > Xamarin.Forms.Platform.Android.FormsViewGroup\bin\%CONFIG%\FormsViewGroup.dll
+
+mkdir Stubs\Xamarin.Forms.Platform.Android\bin\%CONFIG%
+echo foo > Stubs\Xamarin.Forms.Platform.Android\bin\%CONFIG%\Xamarin.Forms.Platform.dll
+
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\ar\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\ca\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\cs\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\da\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\de\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\el\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\es\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\fi\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\fr\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\he\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\hi\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\hr\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\hu\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\id\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\it\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\ja\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\ko\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\ms\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\nb\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\nl\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\pl\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\pt-BR\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\pt\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\ro\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\ru\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\sk\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\sv\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\th\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\tr\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\uk\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\vi\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\zh-Hans\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\zh-Hant\Xamarin.Forms.Platform.iOS.resources.dll
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\zh-HK\Xamarin.Forms.Platform.iOS.resources.dll
+
+echo foo > Xamarin.Forms.Platform.iOS\bin\%CONFIG%\Xamarin.Forms.Platform.iOS.dll
+echo foo > Stubs\Xamarin.Forms.Platform.iOS\bin\iPhone\%CONFIG%\Xamarin.Forms.Platform.dll
+
+echo foo > Xamarin.Forms.Platform.MacOS\bin\%CONFIG%\Xamarin.forms.Platform.macOS.dll
+echo foo > Xamarin.Forms.Platform.MacOS\bin\%CONFIG%\Xamarin.forms.Platform.dll
+echo foo > Xamarin.Forms.Maps.MacOS\bin\%CONFIG%\Xamarin.Forms.Maps.macOS.dll
+
+mkdir Stubs\Xamarin.Forms.Platform.Tizen\bin\%CONFIG%\tizen40
+echo foo > Stubs\Xamarin.Forms.Platform.Tizen\bin\%CONFIG%\tizen40\Xamarin.Forms.Platform.dll
+echo foo > Xamarin.Forms.Maps.Tizen\bin\%CONFIG%\Tizen40\Xamarin.Forms.Maps.Tizen.dll
+
+mkdir Xamarin.Forms.Platform.Tizen\bin\%CONFIG%\tizen40
+echo foo > Xamarin.Forms.Platform.Tizen\bin\%CONFIG%\tizen40\Xamarin.forms.Platform.tizen.dll
+echo foo > Xamarin.Forms.Platform.Tizen\bin\%CONFIG%\tizen40\Xamarin.forms.Platform.dll
+
+mkdir Xamarin.Forms.Platform.UAP\bin\%CONFIG%\
+echo foo > Xamarin.Forms.Platform.UAP\bin\%CONFIG%\Xamarin.Forms.Platform.UAP.dll
+echo foo > Xamarin.Forms.Platform.UAP\bin\%CONFIG%\Xamarin.Forms.Platform.UAP.pri
+echo foo > Xamarin.Forms.Platform.UAP\bin\%CONFIG%\Xamarin.Forms.Platform.UAP.xr.xml
+echo foo > Xamarin.Forms.Platform.UAP\bin\%CONFIG%\FormsProgressBarStyle.xbf
+echo foo > Xamarin.Forms.Platform.UAP\bin\%CONFIG%\FormsFlyout.xbf
+echo foo > Xamarin.Forms.Platform.UAP\bin\%CONFIG%\FormsCommandBarStyle.xbf
+echo foo > Xamarin.Forms.Platform.UAP\bin\%CONFIG%\Resources.xbf
+echo foo > Xamarin.Forms.Platform.UAP\bin\%CONFIG%\FormsTextBoxStyle.xbf
+echo foo > Xamarin.Forms.Platform.UAP\bin\%CONFIG%\AutoSuggestStyle.xbf
+echo foo > Xamarin.Forms.Platform.UAP\bin\%CONFIG%\SliderStyle.xbf
+echo foo > Xamarin.Forms.Platform.UAP\bin\%CONFIG%\MasterDetailControlStyle.xbf
+echo foo > Xamarin.Forms.Platform.UAP\bin\%CONFIG%\PageControlStyle.xbf
+echo foo > Xamarin.Forms.Platform.UAP\bin\%CONFIG%\TabbedPageStyle.xbf
+echo foo > Xamarin.Forms.Platform.UAP\bin\%CONFIG%\FormsEmbeddedPageWrapper.xbf
+echo foo > Xamarin.Forms.Platform.UAP\bin\%CONFIG%\StepperControl.xbf
+
+mkdir Xamarin.Forms.Platform.UAP\bin\%CONFIG%\Items
+echo foo > Xamarin.Forms.Platform.UAP\bin\%CONFIG%\Items\ItemsViewStyles.xbf
+
\ No newline at end of file
--- /dev/null
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Diagnostics;
+using System.IO;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Threading;
+using System.Threading.Tasks;
+using Xamarin.Forms.Internals;
+
+namespace Xamarin.Forms.Internals
+{
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public struct Profile : IDisposable
+ {
+ const int Capacity = 1000;
+
+ [DebuggerDisplay("{Name,nq} {Id} {Ticks}")]
+ public struct Datum
+ {
+ public string Name;
+ public string Id;
+ public long Ticks;
+ public int Depth;
+ public int Line;
+ }
+ public static List<Datum> Data = new List<Datum>(Capacity);
+
+ static Stack<Profile> Stack = new Stack<Profile>(Capacity);
+ static int Depth = 0;
+ static bool Running = false;
+ static Stopwatch Stopwatch = new Stopwatch();
+
+ readonly long _start;
+ readonly string _name;
+ readonly int _slot;
+
+ public static void Start()
+ {
+ Running = true;
+ }
+
+ public static void Stop()
+ {
+ // unwind stack
+ Running = false;
+ while (Stack.Count > 0)
+ Stack.Pop();
+ }
+
+ public static void FrameBegin(
+ [CallerMemberName] string name = "",
+ string id = null,
+ [CallerLineNumber] int line = 0)
+ {
+ if (!Running)
+ return;
+
+ FrameBeginBody(name, id, line);
+ }
+
+ public static void FrameEnd()
+ {
+ if (!Running)
+ return;
+
+ FrameEndBody();
+ }
+
+ public static void FramePartition(
+ string id,
+ [CallerLineNumber] int line = 0)
+ {
+ if (!Running)
+ return;
+
+ FramePartitionBody(id, line);
+ }
+
+ static void FrameBeginBody(
+ string name,
+ string id,
+ int line)
+ {
+ if (!Stopwatch.IsRunning)
+ Stopwatch.Start();
+
+ Stack.Push(new Profile(name, id, line));
+ }
+
+ static void FrameEndBody()
+ {
+ var profile = Stack.Pop();
+ profile.Dispose();
+ }
+
+ static void FramePartitionBody(
+ string id,
+ int line)
+ {
+ var profile = Stack.Pop();
+ var name = profile._name;
+ profile.Dispose();
+
+ FrameBegin(name, id, line);
+ }
+
+ Profile(
+ string name,
+ string id,
+ int line)
+ {
+ this = default(Profile);
+ _start = Stopwatch.ElapsedTicks;
+
+ _name = name;
+
+ _slot = Data.Count;
+ Data.Add(new Datum()
+ {
+ Depth = Depth,
+ Name = name,
+ Id = id,
+ Ticks = -1,
+ Line = line
+ });
+
+ Depth++;
+ }
+
+ public void Dispose()
+ {
+ if (Running && _start == 0)
+ return;
+
+ var ticks = Stopwatch.ElapsedTicks - _start;
+ --Depth;
+
+ var datum = Data[_slot];
+ datum.Ticks = ticks;
+ Data[_slot] = datum;
+ }
+ }
+}
using System.ComponentModel;
using System.Linq;
using System.Reflection;
+using Xamarin.Forms.Internals;
namespace Xamarin.Forms
{
+ [Flags]
+ public enum ActivationFlags
+ {
+ NoCss = 1 << 0,
+ }
+
+
// Previewer uses reflection to bind to this method; Removal or modification of visibility will break previewer.
internal static class Registrar
{
public static Registrar<IRegisterable> Registered { get; internal set; }
+ //typeof(ExportRendererAttribute);
+ //typeof(ExportCellAttribute);
+ //typeof(ExportImageSourceHandlerAttribute);
+ public static void RegisterRenderers(HandlerAttribute[] attributes)
+ {
+ var length = attributes.Length;
+ for (var i = 0; i < length; i++)
+ {
+ var attribute = attributes[i];
+ if (attribute.ShouldRegister())
+ Registered.Register(attribute.HandlerType, attribute.TargetType, attribute.SupportedVisuals);
+ }
+ }
+
+ public static void RegisterStylesheets()
+ {
+ var assembly = typeof(StyleSheets.StylePropertyAttribute).GetTypeInfo().Assembly;
+
+#if NETSTANDARD2_0
+ object[] styleAttributes = assembly.GetCustomAttributes(typeof(StyleSheets.StylePropertyAttribute), true);
+#else
+ object[] styleAttributes = assembly.GetCustomAttributes(typeof(StyleSheets.StylePropertyAttribute)).ToArray();
+#endif
+ var stylePropertiesLength = styleAttributes.Length;
+ for (var i = 0; i < stylePropertiesLength; i++)
+ {
+ var attribute = (StyleSheets.StylePropertyAttribute)styleAttributes[i];
+ if (StyleProperties.TryGetValue(attribute.CssPropertyName, out var attrList))
+ attrList.Add(attribute);
+ else
+ StyleProperties[attribute.CssPropertyName] = new List<StyleSheets.StylePropertyAttribute> { attribute };
+ }
+ }
+
+ public static void RegisterEffects(string resolutionName, ExportEffectAttribute[] effectAttributes)
+ {
+ var exportEffectsLength = effectAttributes.Length;
+ for (var i = 0; i < exportEffectsLength; i++)
+ {
+ var effect = effectAttributes[i];
+ Effects[resolutionName + "." + effect.Id] = effect.Type;
+ }
+ }
+
public static void RegisterAll(Type[] attrTypes)
{
+ RegisterAll(attrTypes, default(ActivationFlags));
+ }
+ public static void RegisterAll(Type[] attrTypes, ActivationFlags flags)
+ {
+ Profile.FrameBegin();
+
Assembly[] assemblies = Device.GetAssemblies();
+
if (ExtraAssemblies != null)
assemblies = assemblies.Union(ExtraAssemblies).ToArray();
// Don't use LINQ for performance reasons
// Naive implementation can easily take over a second to run
+ Profile.FramePartition("Reflect");
foreach (Assembly assembly in assemblies)
{
+ Profile.FrameBegin(assembly.GetName().Name);
+
foreach (Type attrType in attrTypes)
{
object[] attributes;
Log.Warning(nameof(Registrar), "Could not load assembly: {0} for Attibute {1} | Some renderers may not be loaded", assembly.FullName, attrType.FullName);
continue;
}
+
var length = attributes.Length;
for (var i = 0; i < length; i++)
{
var effect = (ExportEffectAttribute)effectAttributes[i];
Effects[resolutionName + "." + effect.Id] = effect.Type;
}
-
+ Profile.FrameEnd();
#if NETSTANDARD2_0
object[] styleAttributes = assembly.GetCustomAttributes(typeof(StyleSheets.StylePropertyAttribute), true);
#else
}
}
+ Profile.FramePartition("DependencyService.Initialize");
DependencyService.Initialize(assemblies);
+
+ Profile.FrameEnd();
}
}
}
protected void LoadApplication(Application application)
{
+ Profile.FrameBegin();
if (!_activityCreated)
{
throw new InvalidOperationException("Activity OnCreate was not called prior to loading the application. Did you forget a base.OnCreate call?");
application.PropertyChanged += AppOnPropertyChanged;
+ Profile.FramePartition(nameof(SetMainPage));
+
SetMainPage();
+
+ Profile.FrameEnd();
}
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
namespace Xamarin.Forms
{
+ public struct ActivationOptions
+ {
+ public struct EffectScope
+ {
+ public string Name;
+ public ExportEffectAttribute[] Effects;
+ }
+
+ public ActivationOptions(Context activity, Bundle bundle, Assembly resourceAssembly)
+ {
+ this = default(ActivationOptions);
+ this.Activity = activity;
+ this.Bundle = bundle;
+ this.ResourceAssembly = resourceAssembly;
+ }
+ public Context Activity;
+ public Bundle Bundle;
+ public Assembly ResourceAssembly;
+ public HandlerAttribute[] Handlers;
+ public EffectScope[] EffectScopes;
+ public ActivationFlags Flags;
+ }
+
public static class Forms
{
+
const int TabletCrossover = 600;
static bool? s_isLollipopOrNewer;
// Why is bundle a param if never used?
public static void Init(Context activity, Bundle bundle)
{
- Assembly resourceAssembly = Assembly.GetCallingAssembly();
- SetupInit(activity, resourceAssembly);
+ Assembly resourceAssembly;
+
+ Profile.FrameBegin("Assembly.GetCallingAssembly");
+ resourceAssembly = Assembly.GetCallingAssembly();
+ Profile.FrameEnd();
+
+ Profile.FrameBegin();
+ SetupInit(activity, resourceAssembly, null);
+ Profile.FrameEnd();
}
public static void Init(Context activity, Bundle bundle, Assembly resourceAssembly)
{
- SetupInit(activity, resourceAssembly);
+ Profile.FrameBegin();
+ SetupInit(activity, resourceAssembly, null);
+ Profile.FrameEnd();
+ }
+
+ public static void Initialize(ActivationOptions activation)
+ {
+ Profile.FrameBegin();
+ SetupInit(
+ activation.Activity,
+ activation.ResourceAssembly,
+ activation
+ );
+ Profile.FrameEnd();
}
/// <summary>
viewInitialized(self, new ViewInitializedEventArgs { View = self, NativeView = nativeView });
}
- static void SetupInit(Context activity, Assembly resourceAssembly)
+ static void SetupInit(
+ Context activity,
+ Assembly resourceAssembly,
+ ActivationOptions? maybeOptions = null
+ )
{
+ Profile.FrameBegin();
if (!IsInitialized)
{
// Only need to get this once; it won't change
if (!IsInitialized)
{
// Only need to do this once
+ Profile.FramePartition("ResourceManager.Init");
ResourceManager.Init(resourceAssembly);
}
+ Profile.FramePartition("Color.SetAccent()");
// We want this to be updated when we have a new activity (e.g. on a configuration change)
// This could change if the UI mode changes (e.g., if night mode is enabled)
Color.SetAccent(GetAccentColor(activity));
if (!IsInitialized)
{
// Only need to do this once
+ Profile.FramePartition("Log.Listeners");
Internals.Log.Listeners.Add(new DelegateLogListener((c, m) => Trace.WriteLine(m, c)));
}
// We want this to be updated when we have a new activity (e.g. on a configuration change)
// because AndroidPlatformServices needs a current activity to launch URIs from
+ Profile.FramePartition("Device.PlatformServices");
Device.PlatformServices = new AndroidPlatformServices(activity);
// use field and not property to avoid exception in getter
// We want this to be updated when we have a new activity (e.g. on a configuration change)
// because Device.Info watches for orientation changes and we need a current activity for that
+ Profile.FramePartition("new AndroidDeviceInfo(activity)");
Device.Info = new AndroidDeviceInfo(activity);
Device.SetFlags(s_flags);
+ Profile.FramePartition("AndroidTicker");
+
var ticker = Ticker.Default as AndroidTicker;
if (ticker != null)
ticker.Dispose();
Ticker.SetDefault(new AndroidTicker());
+ Profile.FramePartition("RegisterAll");
+
if (!IsInitialized)
{
- // Only need to do this once
- Registrar.RegisterAll(new[] { typeof(ExportRendererAttribute), typeof(ExportCellAttribute), typeof(ExportImageSourceHandlerAttribute) });
+ if (maybeOptions.HasValue)
+ {
+ var options = maybeOptions.Value;
+ var handlers = options.Handlers;
+ var flags = options.Flags;
+ var effectScopes = options.EffectScopes;
+
+ // renderers
+ Registrar.RegisterRenderers(handlers);
+
+ // effects
+ if (effectScopes != null)
+ {
+ for (var i = 0; i < effectScopes.Length; i++)
+ {
+ var effectScope = effectScopes[0];
+ Registrar.RegisterEffects(effectScope.Name, effectScope.Effects);
+ }
+ }
+
+ // css
+ var noCss = (flags & ActivationFlags.NoCss) != 0;
+ if (!noCss)
+ Registrar.RegisterStylesheets();
+ }
+ else
+ {
+ // Only need to do this once
+ Registrar.RegisterAll(new[] {
+ typeof(ExportRendererAttribute),
+ typeof(ExportCellAttribute),
+ typeof(ExportImageSourceHandlerAttribute)
+ });
+ }
}
+ Profile.FramePartition("Epilog");
// This could change as a result of a config change, so we need to check it every time
int minWidthDp = activity.Resources.Configuration.SmallestScreenWidthDp;
Device.SetIdiom(minWidthDp >= TabletCrossover ? TargetIdiom.Tablet : TargetIdiom.Phone);
ExpressionSearch.Default = new AndroidExpressionSearch();
IsInitialized = true;
+ Profile.FrameEnd();
}
static IReadOnlyList<string> s_flags;
internal static IVisualElementRenderer CreateRenderer(VisualElement element, Context context)
{
+ Profile.FrameBegin(nameof(CreateRenderer));
IVisualElementRenderer renderer = Registrar.Registered.GetHandlerForObject<IVisualElementRenderer>(element, context)
?? new DefaultRenderer(context);
+ Profile.FramePartition(element.GetType().Name);
renderer.SetElement(element);
+ Profile.FrameEnd();
return renderer;
}
using Android.Content;
using Android.Views;
using Android.Widget;
+using Xamarin.Forms.Internals;
namespace Xamarin.Forms.Platform.Android
{
protected override void OnLayout(bool changed, int l, int t, int r, int b)
{
+ Profile.FrameBegin();
SetMeasuredDimension(r - l, b - t);
_canvas?.OnLayout(changed, l, t, r, b);
+ Profile.FrameEnd();
}
protected override void OnMeasure(int widthMeasureSpec, int heightMeasureSpec)
namespace Xamarin.Forms.Platform.Android
{
+ //public class OpenGLViewRenderer : ViewRenderer<OpenGLView, GLSurfaceView>
internal class OpenGLViewRenderer : ViewRenderer<OpenGLView, GLSurfaceView>
{
bool _disposed;