diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 088565edf..6df65d080 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -25,7 +25,7 @@ jobs:
run: dotnet test --no-build --configuration Release ${SLN_FILE}
- name: Pack
run: |
- sed -i bak "s/FABULOUS_PKG_VERSION/2.0.0-nightly-${GITHUB_RUN_ID}/g" "templates/content/blank/.template.config/template.json"
+ sed -i bak "s/FABULOUS_PKG_VERSION/2.0.1-nightly-${GITHUB_RUN_ID}/g" "templates/content/*/.template.config/template.json"
dotnet pack --configuration Release --output nupkgs --version-suffix "nightly-${GITHUB_RUN_ID}" ${SLN_FILE}
dotnet pack -p:IsNightlyBuild=true --configuration Release --output nupkgs --version-suffix "nightly-${GITHUB_RUN_ID}" templates/Fabulous.XamarinForms.Templates.proj
- name: Push
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 113a81c6f..1b8b90eb3 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -28,9 +28,9 @@ jobs:
run: dotnet test --no-build --configuration Release ${SLN_FILE}
- name: Pack
run: |
- sed -i bak "s/FABULOUS_PKG_VERSION/${MAJOR}.${MINOR}.${PATCH}/g" "templates/content/blank/.template.config/template.json"
+ sed -i bak "s/FABULOUS_PKG_VERSION/${MAJOR}.${MINOR}.${PATCH}/g" "templates/content/*/.template.config/template.json"
dotnet pack --configuration Release --output nupkgs ${SLN_FILE}
dotnet pack --configuration Release --output nupkgs templates/Fabulous.XamarinForms.Templates.proj
- - name: Push
- run: |
- dotnet nuget push "nupkgs/*.nupkg" -k ${{ secrets.NUGET_TOKEN }} --skip-duplicate
+ # - name: Push
+ # run: |
+ # dotnet nuget push "nupkgs/*.nupkg" -k ${{ secrets.NUGET_TOKEN }} --skip-duplicate
diff --git a/docs/content/en/v2/getting-started/index.md b/docs/content/en/v2/getting-started/index.md
index ad569f5db..1d5bdc808 100644
--- a/docs/content/en/v2/getting-started/index.md
+++ b/docs/content/en/v2/getting-started/index.md
@@ -54,6 +54,8 @@ Now, we can create the solution using the newly installed template:
dotnet new fabulous-xf -n FabHelloWorld
```
+_Note: if you plan to use Visual Studio on Windows, use `fabulous-xf-vswin` instead. Visual Studio doesn't support the default template._
+
### Build and run
In your IDE, you will be able to choose the configuration profile, the project to start and the device or simulator to use.
diff --git a/src/Fabulous.XamarinForms/Fabulous.XamarinForms.fsproj b/src/Fabulous.XamarinForms/Fabulous.XamarinForms.fsproj
index e45f2d9c0..ae7a47324 100644
--- a/src/Fabulous.XamarinForms/Fabulous.XamarinForms.fsproj
+++ b/src/Fabulous.XamarinForms/Fabulous.XamarinForms.fsproj
@@ -5,7 +5,7 @@
PackageREADME.md
nuget-icon.png
Apache-2.0
- 2.0.0
+ 2.0.1
https://github.com/fsprojects/Fabulous
true
diff --git a/src/Fabulous/Fabulous.fsproj b/src/Fabulous/Fabulous.fsproj
index 8a99a6b19..4b73d6fff 100644
--- a/src/Fabulous/Fabulous.fsproj
+++ b/src/Fabulous/Fabulous.fsproj
@@ -5,7 +5,7 @@
PackageREADME.md
nuget-icon.png
Apache-2.0
- 2.0.0
+ 2.0.1
https://github.com/fsprojects/Fabulous
true
diff --git a/templates/Fabulous.XamarinForms.Templates.proj b/templates/Fabulous.XamarinForms.Templates.proj
index 038884dfc..ccea9b7f1 100644
--- a/templates/Fabulous.XamarinForms.Templates.proj
+++ b/templates/Fabulous.XamarinForms.Templates.proj
@@ -14,7 +14,7 @@
netstandard2.1
true
- 2.0.0
+ 2.0.1
$(NoWarn);NU5128
diff --git a/templates/content/blank-vswin/.gitignore b/templates/content/blank-vswin/.gitignore
new file mode 100644
index 000000000..8afdcb635
--- /dev/null
+++ b/templates/content/blank-vswin/.gitignore
@@ -0,0 +1,454 @@
+## 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
+
+# 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
+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/
+
+# Tye
+.tye/
+
+# 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
+*.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
+
+##
+## Visual studio for Mac
+##
+
+
+# globs
+Makefile.in
+*.userprefs
+*.usertasks
+config.make
+config.status
+aclocal.m4
+install-sh
+autom4te.cache/
+*.tar.gz
+tarballs/
+test-results/
+
+# Mac bundle stuff
+*.dmg
+*.app
+
+# content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore
+# General
+.DS_Store
+.AppleDouble
+.LSOverride
+
+# Icon must end with two \r
+Icon
+
+
+# Thumbnails
+._*
+
+# Files that might appear in the root of a volume
+.DocumentRevisions-V100
+.fseventsd
+.Spotlight-V100
+.TemporaryItems
+.Trashes
+.VolumeIcon.icns
+.com.apple.timemachine.donotpresent
+
+# Directories potentially created on remote AFP share
+.AppleDB
+.AppleDesktop
+Network Trash Folder
+Temporary Items
+.apdisk
+
+# content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore
+# Windows thumbnail cache files
+Thumbs.db
+ehthumbs.db
+ehthumbs_vista.db
+
+# Dump file
+*.stackdump
+
+# Folder config file
+[Dd]esktop.ini
+
+# Recycle Bin used on file shares
+$RECYCLE.BIN/
+
+# Windows Installer files
+*.cab
+*.msi
+*.msix
+*.msm
+*.msp
+
+# Windows shortcuts
+*.lnk
+
+# JetBrains Rider
+.idea/
+*.sln.iml
+
+##
+## Visual Studio Code
+##
+.vscode/*
+!.vscode/settings.json
+!.vscode/tasks.json
+!.vscode/launch.json
+!.vscode/extensions.json
diff --git a/templates/content/blank-vswin/.template.config/dotnetcli.host.json b/templates/content/blank-vswin/.template.config/dotnetcli.host.json
new file mode 100644
index 000000000..0e0dcd235
--- /dev/null
+++ b/templates/content/blank-vswin/.template.config/dotnetcli.host.json
@@ -0,0 +1,3 @@
+{
+
+}
\ No newline at end of file
diff --git a/templates/content/blank-vswin/.template.config/template.json b/templates/content/blank-vswin/.template.config/template.json
new file mode 100644
index 000000000..a3acb2263
--- /dev/null
+++ b/templates/content/blank-vswin/.template.config/template.json
@@ -0,0 +1,61 @@
+{
+ "author": "fsprojects",
+ "classifications": [
+ "Fabulous",
+ "Xamarin.Forms"
+ ],
+ "name": "Fabulous XF VS Windows",
+ "groupIdentity": "Fabulous.XamarinForms.App.BlankVsWin",
+ "identity": "Fabulous.XamarinForms.BlankVsWin",
+ "shortName": "fabulous-xf-vswin",
+ "tags": {
+ "language": "F#",
+ "type": "project"
+ },
+ "sourceName": "NewApp",
+ "primaryOutputs": [
+ {
+ "path": "NewApp\\NewApp.fs"
+ },
+ {
+ "condition": "iOS",
+ "path": "NewApp.iOS\\NewApp.iOS.fsproj"
+ }
+ ],
+ "defaultName": "App",
+ "preferNameDirectory": "true",
+ "postActions": [],
+ "guids": [
+ "99E19497-29A6-4B77-B773-BEC55F9B55DC",
+ "1069F96F-A42B-4CD8-8FA1-7F047C726B88",
+ "E26BCFA7-B118-4866-875B-F4364DF40545"
+ ],
+ "symbols": {
+ "AppIdentifier": {
+ "type": "parameter",
+ "description": "Overrides the Info.plist's CFBundleIdentifier",
+ "datatype": "string",
+ "defaultValue": "com.companyname"
+ },
+ "iOSAppIdentifier": {
+ "type": "parameter",
+ "description": "Overrides the Info.plist's CFBundleIdentifier",
+ "datatype": "string"
+ },
+ "iOSAppIdentifierReplacer": {
+ "type": "generated",
+ "generator": "coalesce",
+ "parameters": {
+ "sourceVariableName": "iOSAppIdentifier",
+ "fallbackVariableName": "AppIdentifier"
+ },
+ "replaces": "com.companyname.NewApp.iOS"
+ },
+ "FabulousPkgsVersion": {
+ "type": "parameter",
+ "dataType": "string",
+ "replaces": "FabulousPkgsVersion",
+ "defaultValue": "FABULOUS_PKG_VERSION"
+ }
+ }
+}
\ No newline at end of file
diff --git a/templates/content/blank-vswin/NewApp.Android/AssemblyInfo.fs b/templates/content/blank-vswin/NewApp.Android/AssemblyInfo.fs
new file mode 100644
index 000000000..cbabcef5b
--- /dev/null
+++ b/templates/content/blank-vswin/NewApp.Android/AssemblyInfo.fs
@@ -0,0 +1,37 @@
+namespace NewApp.Android
+
+open System.Reflection
+open System.Runtime.CompilerServices
+open System.Runtime.InteropServices
+open Android.App
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[]
+[]
+[]
+[]
+[]
+[]
+[]
+[]
+[]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// []
+[]
+[]
+
+// Add some common permissions, these can be removed if not needed
+[]
+[]
+do ()
diff --git a/templates/content/blank-vswin/NewApp.Android/Assets/AboutAssets.txt b/templates/content/blank-vswin/NewApp.Android/Assets/AboutAssets.txt
new file mode 100644
index 000000000..072563f8f
--- /dev/null
+++ b/templates/content/blank-vswin/NewApp.Android/Assets/AboutAssets.txt
@@ -0,0 +1,19 @@
+Any raw assets you want to be deployed with your application can be placed in
+this directory (and child directories) and given a Build Action of "AndroidAsset".
+
+These files will be deployed with your package and will be accessible using Android's
+AssetManager, like this:
+
+public class ReadAsset : Activity
+{
+ protected override void OnCreate (Bundle bundle)
+ {
+ base.OnCreate (bundle);
+
+ InputStream input = Assets.Open ("my_asset.txt");
+ }
+}
+
+Additionally, some Android functions will automatically load asset files:
+
+Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf");
diff --git a/templates/content/blank-vswin/NewApp.Android/MainActivity.fs b/templates/content/blank-vswin/NewApp.Android/MainActivity.fs
new file mode 100644
index 000000000..35fbe65c5
--- /dev/null
+++ b/templates/content/blank-vswin/NewApp.Android/MainActivity.fs
@@ -0,0 +1,44 @@
+namespace NewApp.Android
+
+open System
+
+open Android.App
+open Android.Content
+open Android.Content.PM
+open Android.Runtime
+open Android.Views
+open Android.Widget
+open Android.OS
+
+open Fabulous.XamarinForms
+open NewApp
+open Xamarin.Forms.Platform.Android
+
+[]
+type MainActivity() =
+ inherit FormsAppCompatActivity()
+
+ do NewApp.Android.Resource.UpdateIdValues()
+
+ override this.OnCreate(bundle: Bundle) =
+ FormsAppCompatActivity.TabLayoutResource <- NewApp.Android.Resource.Layout.Tabbar
+ FormsAppCompatActivity.ToolbarResource <- NewApp.Android.Resource.Layout.Toolbar
+
+ base.OnCreate(bundle)
+ Xamarin.Essentials.Platform.Init(this, bundle)
+ Xamarin.Forms.Forms.Init(this, bundle)
+ this.LoadApplication(Program.startApplication App.program)
+
+ override this.OnRequestPermissionsResult
+ (
+ requestCode: int,
+ permissions: string [],
+ [] grantResults: Android.Content.PM.Permission []
+ ) =
+ Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults)
+ base.OnRequestPermissionsResult(requestCode, permissions, grantResults)
diff --git a/templates/content/blank-vswin/NewApp.Android/NewApp.Android.fsproj b/templates/content/blank-vswin/NewApp.Android/NewApp.Android.fsproj
new file mode 100644
index 000000000..1493a832a
--- /dev/null
+++ b/templates/content/blank-vswin/NewApp.Android/NewApp.Android.fsproj
@@ -0,0 +1,404 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {E26BCFA7-B118-4866-875B-F4364DF40545}
+ {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{F2A71F9B-5D33-465A-A702-920D77279786}
+ true
+ Library
+ NewApp.Android
+ NewApp.Android
+ v11.0
+ True
+ Resources\Resource.designer.cs
+ Resource
+ Properties\AndroidManifest.xml
+ Resources
+ Assets
+ true
+ None
+ true
+
+
+ true
+ full
+ false
+ bin\Debug
+ DEBUG
+ prompt
+
+
+ armeabi-v7a;x86;arm64-v8a;x86_64
+ True
+
+
+ true
+ pdbonly
+ true
+ bin\Release
+
+
+ prompt
+ true
+ false
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {99E19497-29A6-4B77-B773-BEC55F9B55DC}
+ NewApp
+
+
+
+
+ ..\packages\Fabulous.FabulousPkgsVersion\lib\netstandard2.1\Fabulous.dll
+
+
+ ..\packages\Fabulous.XamarinForms.FabulousPkgsVersion\lib\netstandard2.1\Fabulous.XamarinForms.dll
+
+
+ ..\packages\Xamarin.Forms.5.0.0.2401\lib\MonoAndroid10.0\FormsViewGroup.dll
+
+
+ ..\packages\FSharp.Core.6.0.4\lib\netstandard2.1\FSharp.Core.dll
+
+
+
+
+
+
+ True
+
+
+
+ True
+
+
+
+
+ True
+
+
+
+ ..\packages\Xamarin.AndroidX.Activity.1.2.4.1\lib\monoandroid90\Xamarin.AndroidX.Activity.dll
+
+
+ ..\packages\Xamarin.AndroidX.Annotation.1.2.0.1\lib\monoandroid90\Xamarin.AndroidX.Annotation.dll
+
+
+ ..\packages\Xamarin.AndroidX.Annotation.Experimental.1.1.0.1\lib\monoandroid90\Xamarin.AndroidX.Annotation.Experimental.dll
+
+
+ ..\packages\Xamarin.AndroidX.AppCompat.1.3.1.1\lib\monoandroid90\Xamarin.AndroidX.AppCompat.dll
+
+
+ ..\packages\Xamarin.AndroidX.AppCompat.AppCompatResources.1.3.1.1\lib\monoandroid90\Xamarin.AndroidX.AppCompat.AppCompatResources.dll
+
+
+ ..\packages\Xamarin.AndroidX.Arch.Core.Common.2.1.0.9\lib\monoandroid90\Xamarin.AndroidX.Arch.Core.Common.dll
+
+
+ ..\packages\Xamarin.AndroidX.Arch.Core.Runtime.2.1.0.9\lib\monoandroid90\Xamarin.AndroidX.Arch.Core.Runtime.dll
+
+
+ ..\packages\Xamarin.AndroidX.AsyncLayoutInflater.1.0.0.8\lib\monoandroid90\Xamarin.AndroidX.AsyncLayoutInflater.dll
+
+
+ ..\packages\Xamarin.AndroidX.Browser.1.3.0.6\lib\monoandroid90\Xamarin.AndroidX.Browser.dll
+
+
+ ..\packages\Xamarin.AndroidX.CardView.1.0.0.9\lib\monoandroid90\Xamarin.AndroidX.CardView.dll
+
+
+ ..\packages\Xamarin.AndroidX.Collection.1.1.0.8\lib\monoandroid90\Xamarin.AndroidX.Collection.dll
+
+
+ ..\packages\Xamarin.AndroidX.Concurrent.Futures.1.1.0.3\lib\monoandroid90\Xamarin.AndroidX.Concurrent.Futures.dll
+
+
+ ..\packages\Xamarin.AndroidX.ConstraintLayout.2.1.0\lib\monoandroid90\Xamarin.AndroidX.ConstraintLayout.dll
+
+
+ ..\packages\Xamarin.AndroidX.ConstraintLayout.Core.1.0.0\lib\monoandroid90\Xamarin.AndroidX.ConstraintLayout.Core.dll
+
+
+ ..\packages\Xamarin.AndroidX.CoordinatorLayout.1.1.0.8\lib\monoandroid90\Xamarin.AndroidX.CoordinatorLayout.dll
+
+
+ ..\packages\Xamarin.AndroidX.Core.1.6.0.1\lib\monoandroid90\Xamarin.AndroidX.Core.dll
+
+
+ ..\packages\Xamarin.AndroidX.CursorAdapter.1.0.0.8\lib\monoandroid90\Xamarin.AndroidX.CursorAdapter.dll
+
+
+ ..\packages\Xamarin.AndroidX.CustomView.1.1.0.7\lib\monoandroid90\Xamarin.AndroidX.CustomView.dll
+
+
+ ..\packages\Xamarin.AndroidX.DocumentFile.1.0.1.8\lib\monoandroid90\Xamarin.AndroidX.DocumentFile.dll
+
+
+ ..\packages\Xamarin.AndroidX.DrawerLayout.1.1.1.3\lib\monoandroid90\Xamarin.AndroidX.DrawerLayout.dll
+
+
+ ..\packages\Xamarin.AndroidX.DynamicAnimation.1.0.0.8\lib\monoandroid90\Xamarin.AndroidX.DynamicAnimation.dll
+
+
+ ..\packages\Xamarin.AndroidX.Fragment.1.3.6.1\lib\monoandroid90\Xamarin.AndroidX.Fragment.dll
+
+
+ ..\packages\Xamarin.AndroidX.Interpolator.1.0.0.8\lib\monoandroid90\Xamarin.AndroidX.Interpolator.dll
+
+
+ ..\packages\Xamarin.AndroidX.Legacy.Support.Core.UI.1.0.0.9\lib\monoandroid90\Xamarin.AndroidX.Legacy.Support.Core.UI.dll
+
+
+ ..\packages\Xamarin.AndroidX.Legacy.Support.Core.Utils.1.0.0.8\lib\monoandroid90\Xamarin.AndroidX.Legacy.Support.Core.Utils.dll
+
+
+ ..\packages\Xamarin.AndroidX.Legacy.Support.V4.1.0.0.8\lib\monoandroid90\Xamarin.AndroidX.Legacy.Support.V4.dll
+
+
+ ..\packages\Xamarin.AndroidX.Lifecycle.Common.2.3.1.1\lib\monoandroid90\Xamarin.AndroidX.Lifecycle.Common.dll
+
+
+ ..\packages\Xamarin.AndroidX.Lifecycle.LiveData.2.3.1.1\lib\monoandroid90\Xamarin.AndroidX.Lifecycle.LiveData.dll
+
+
+ ..\packages\Xamarin.AndroidX.Lifecycle.LiveData.Core.2.3.1.1\lib\monoandroid90\Xamarin.AndroidX.Lifecycle.LiveData.Core.dll
+
+
+ ..\packages\Xamarin.AndroidX.Lifecycle.Runtime.2.3.1.2\lib\monoandroid90\Xamarin.AndroidX.Lifecycle.Runtime.dll
+
+
+ ..\packages\Xamarin.AndroidX.Lifecycle.ViewModel.2.3.1.1\lib\monoandroid90\Xamarin.AndroidX.Lifecycle.ViewModel.dll
+
+
+ ..\packages\Xamarin.AndroidX.Lifecycle.ViewModelSavedState.2.3.1.1\lib\monoandroid90\Xamarin.AndroidX.Lifecycle.ViewModelSavedState.dll
+
+
+ ..\packages\Xamarin.AndroidX.Loader.1.1.0.8\lib\monoandroid90\Xamarin.AndroidX.Loader.dll
+
+
+ ..\packages\Xamarin.AndroidX.LocalBroadcastManager.1.0.0.8\lib\monoandroid90\Xamarin.AndroidX.LocalBroadcastManager.dll
+
+
+ ..\packages\Xamarin.AndroidX.Media.1.4.0.1\lib\monoandroid90\Xamarin.AndroidX.Media.dll
+
+
+ ..\packages\Xamarin.AndroidX.MultiDex.2.0.1.5\lib\monoandroid90\Xamarin.AndroidX.MultiDex.dll
+
+
+ ..\packages\Xamarin.AndroidX.Navigation.Common.2.3.5.1\lib\monoandroid90\Xamarin.AndroidX.Navigation.Common.dll
+
+
+ ..\packages\Xamarin.AndroidX.Navigation.Runtime.2.3.5.1\lib\monoandroid90\Xamarin.AndroidX.Navigation.Runtime.dll
+
+
+ ..\packages\Xamarin.AndroidX.Navigation.UI.2.3.5.1\lib\monoandroid90\Xamarin.AndroidX.Navigation.UI.dll
+
+
+ ..\packages\Xamarin.AndroidX.Preference.1.1.1.9\lib\monoandroid90\Xamarin.AndroidX.Preference.dll
+
+
+ ..\packages\Xamarin.AndroidX.Print.1.0.0.8\lib\monoandroid90\Xamarin.AndroidX.Print.dll
+
+
+ ..\packages\Xamarin.AndroidX.RecyclerView.1.2.1.1\lib\monoandroid90\Xamarin.AndroidX.RecyclerView.dll
+
+
+ ..\packages\Xamarin.AndroidX.SavedState.1.1.0.2\lib\monoandroid90\Xamarin.AndroidX.SavedState.dll
+
+
+ ..\packages\Xamarin.AndroidX.SlidingPaneLayout.1.1.0.3\lib\monoandroid90\Xamarin.AndroidX.SlidingPaneLayout.dll
+
+
+ ..\packages\Xamarin.AndroidX.SwipeRefreshLayout.1.1.0.3\lib\monoandroid90\Xamarin.AndroidX.SwipeRefreshLayout.dll
+
+
+ ..\packages\Xamarin.AndroidX.Tracing.Tracing.1.0.0.1\lib\monoandroid90\Xamarin.AndroidX.Tracing.Tracing.dll
+
+
+ ..\packages\Xamarin.AndroidX.Transition.1.4.1.1\lib\monoandroid90\Xamarin.AndroidX.Transition.dll
+
+
+ ..\packages\Xamarin.AndroidX.VectorDrawable.1.1.0.8\lib\monoandroid90\Xamarin.AndroidX.VectorDrawable.dll
+
+
+ ..\packages\Xamarin.AndroidX.VectorDrawable.Animated.1.1.0.8\lib\monoandroid90\Xamarin.AndroidX.VectorDrawable.Animated.dll
+
+
+ ..\packages\Xamarin.AndroidX.VersionedParcelable.1.1.1.8\lib\monoandroid90\Xamarin.AndroidX.VersionedParcelable.dll
+
+
+ ..\packages\Xamarin.AndroidX.ViewPager.1.0.0.8\lib\monoandroid90\Xamarin.AndroidX.ViewPager.dll
+
+
+ ..\packages\Xamarin.AndroidX.ViewPager2.1.0.0.10\lib\monoandroid90\Xamarin.AndroidX.ViewPager2.dll
+
+
+ ..\packages\Xamarin.CommunityToolkit.2.0.2\lib\monoandroid10.0\Xamarin.CommunityToolkit.dll
+
+
+ ..\packages\Xamarin.Essentials.1.7.3\lib\monoandroid10.0\Xamarin.Essentials.dll
+
+
+ ..\packages\Xamarin.Forms.5.0.0.2401\lib\MonoAndroid10.0\Xamarin.Forms.Core.dll
+
+
+ ..\packages\Xamarin.Forms.5.0.0.2401\lib\MonoAndroid10.0\Xamarin.Forms.Platform.dll
+
+
+ ..\packages\Xamarin.Forms.5.0.0.2401\lib\MonoAndroid10.0\Xamarin.Forms.Platform.Android.dll
+
+
+ ..\packages\Xamarin.Forms.5.0.0.2401\lib\MonoAndroid10.0\Xamarin.Forms.Xaml.dll
+
+
+ ..\packages\Xamarin.Google.Android.Material.1.4.0.2\lib\monoandroid90\Xamarin.Google.Android.Material.dll
+
+
+ ..\packages\Xamarin.Google.Guava.ListenableFuture.1.0.0.2\lib\monoandroid50\Xamarin.Google.Guava.ListenableFuture.dll
+
+
+
+
+
+
+ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/templates/content/blank-vswin/NewApp.Android/Properties/AndroidManifest.xml b/templates/content/blank-vswin/NewApp.Android/Properties/AndroidManifest.xml
new file mode 100644
index 000000000..169708dda
--- /dev/null
+++ b/templates/content/blank-vswin/NewApp.Android/Properties/AndroidManifest.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/templates/content/blank-vswin/NewApp.Android/Resources/AboutResources.txt b/templates/content/blank-vswin/NewApp.Android/Resources/AboutResources.txt
new file mode 100644
index 000000000..cb30f20b1
--- /dev/null
+++ b/templates/content/blank-vswin/NewApp.Android/Resources/AboutResources.txt
@@ -0,0 +1,50 @@
+Images, layout descriptions, binary blobs and string dictionaries can be included
+in your application as resource files. Various Android APIs are designed to
+operate on the resource IDs instead of dealing with images, strings or binary blobs
+directly.
+
+For example, a sample Android app that contains a user interface layout (main.xml),
+an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png)
+would keep its resources in the "Resources" directory of the application:
+
+Resources/
+ drawable-hdpi/
+ icon.png
+
+ drawable-ldpi/
+ icon.png
+
+ drawable-mdpi/
+ icon.png
+
+ layout/
+ main.xml
+
+ values/
+ strings.xml
+
+In order to get the build system to recognize Android resources, set the build action to
+"AndroidResource". The native Android APIs do not operate directly with filenames, but
+instead operate on resource IDs. When you compile an Android application that uses resources,
+the build system will package the resources for distribution and generate a class called
+"Resource" that contains the tokens for each one of the resources included. For example,
+for the above Resources layout, this is what the Resource class would expose:
+
+public class Resource {
+ public class drawable {
+ public const int icon = 0x123;
+ }
+
+ public class layout {
+ public const int main = 0x456;
+ }
+
+ public class strings {
+ public const int first_string = 0xabc;
+ public const int second_string = 0xbcd;
+ }
+}
+
+You would then use R.drawable.icon to reference the drawable/icon.png file, or Resource.layout.main
+to reference the layout/main.xml file, or Resource.strings.first_string to reference the first
+string in the dictionary file values/strings.xml.
diff --git a/templates/content/blank-vswin/NewApp.Android/Resources/drawable-hdpi/icon.png b/templates/content/blank-vswin/NewApp.Android/Resources/drawable-hdpi/icon.png
new file mode 100644
index 000000000..a7a5acbf4
Binary files /dev/null and b/templates/content/blank-vswin/NewApp.Android/Resources/drawable-hdpi/icon.png differ
diff --git a/templates/content/blank-vswin/NewApp.Android/Resources/drawable-xhdpi/icon.png b/templates/content/blank-vswin/NewApp.Android/Resources/drawable-xhdpi/icon.png
new file mode 100644
index 000000000..8e01234b7
Binary files /dev/null and b/templates/content/blank-vswin/NewApp.Android/Resources/drawable-xhdpi/icon.png differ
diff --git a/templates/content/blank-vswin/NewApp.Android/Resources/drawable-xxhdpi/icon.png b/templates/content/blank-vswin/NewApp.Android/Resources/drawable-xxhdpi/icon.png
new file mode 100644
index 000000000..c9322f7fa
Binary files /dev/null and b/templates/content/blank-vswin/NewApp.Android/Resources/drawable-xxhdpi/icon.png differ
diff --git a/templates/content/blank-vswin/NewApp.Android/Resources/drawable/icon.png b/templates/content/blank-vswin/NewApp.Android/Resources/drawable/icon.png
new file mode 100644
index 000000000..5448dc797
Binary files /dev/null and b/templates/content/blank-vswin/NewApp.Android/Resources/drawable/icon.png differ
diff --git a/templates/content/blank-vswin/NewApp.Android/Resources/layout/Tabbar.axml b/templates/content/blank-vswin/NewApp.Android/Resources/layout/Tabbar.axml
new file mode 100644
index 000000000..bc2faec48
--- /dev/null
+++ b/templates/content/blank-vswin/NewApp.Android/Resources/layout/Tabbar.axml
@@ -0,0 +1,11 @@
+
+
diff --git a/templates/content/blank-vswin/NewApp.Android/Resources/layout/Toolbar.axml b/templates/content/blank-vswin/NewApp.Android/Resources/layout/Toolbar.axml
new file mode 100644
index 000000000..b435b85f5
--- /dev/null
+++ b/templates/content/blank-vswin/NewApp.Android/Resources/layout/Toolbar.axml
@@ -0,0 +1,9 @@
+
+
diff --git a/templates/content/blank-vswin/NewApp.Android/Resources/values/colors.xml b/templates/content/blank-vswin/NewApp.Android/Resources/values/colors.xml
new file mode 100644
index 000000000..d9f6e0baf
--- /dev/null
+++ b/templates/content/blank-vswin/NewApp.Android/Resources/values/colors.xml
@@ -0,0 +1,7 @@
+
+
+ #FFFFFF
+ #3F51B5
+ #303F9F
+ #FF4081
+
diff --git a/templates/content/blank-vswin/NewApp.Android/Resources/values/styles.xml b/templates/content/blank-vswin/NewApp.Android/Resources/values/styles.xml
new file mode 100644
index 000000000..43b0a58c1
--- /dev/null
+++ b/templates/content/blank-vswin/NewApp.Android/Resources/values/styles.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
diff --git a/templates/content/blank-vswin/NewApp.Android/packages.config b/templates/content/blank-vswin/NewApp.Android/packages.config
new file mode 100644
index 000000000..70befd182
--- /dev/null
+++ b/templates/content/blank-vswin/NewApp.Android/packages.config
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/templates/content/blank-vswin/NewApp.iOS/AppDelegate.fs b/templates/content/blank-vswin/NewApp.iOS/AppDelegate.fs
new file mode 100644
index 000000000..b0992c257
--- /dev/null
+++ b/templates/content/blank-vswin/NewApp.iOS/AppDelegate.fs
@@ -0,0 +1,25 @@
+namespace NewApp.iOS
+
+open System
+open UIKit
+open Foundation
+open Xamarin.Essentials
+open Xamarin.Forms
+open Xamarin.Forms.Platform.iOS
+open Fabulous.XamarinForms
+open NewApp
+
+[]
+type AppDelegate() =
+ inherit FormsApplicationDelegate()
+
+ override this.FinishedLaunching(app, options) =
+ Forms.Init()
+ this.LoadApplication(Program.startApplication App.program)
+ base.FinishedLaunching(app, options)
+
+module Main =
+ []
+ let main args =
+ UIApplication.Main(args, null, typeof)
+ 0
diff --git a/templates/content/blank-vswin/NewApp.iOS/Assets.xcassets/AppIcon.appiconset/Contents.json b/templates/content/blank-vswin/NewApp.iOS/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 000000000..dc4bd9848
--- /dev/null
+++ b/templates/content/blank-vswin/NewApp.iOS/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,237 @@
+{
+ "images": [
+ {
+ "size": "20x20",
+ "scale": "2x",
+ "idiom": "iphone"
+ },
+ {
+ "size": "20x20",
+ "scale": "3x",
+ "idiom": "iphone"
+ },
+ {
+ "size": "29x29",
+ "scale": "2x",
+ "idiom": "iphone"
+ },
+ {
+ "size": "29x29",
+ "scale": "3x",
+ "idiom": "iphone"
+ },
+ {
+ "size": "40x40",
+ "scale": "2x",
+ "idiom": "iphone"
+ },
+ {
+ "size": "40x40",
+ "scale": "3x",
+ "idiom": "iphone"
+ },
+ {
+ "filename": "icon-60x60@2x.png",
+ "size": "60x60",
+ "scale": "2x",
+ "idiom": "iphone"
+ },
+ {
+ "filename": "icon-60x60@3x.png",
+ "size": "60x60",
+ "scale": "3x",
+ "idiom": "iphone"
+ },
+ {
+ "size": "20x20",
+ "scale": "1x",
+ "idiom": "ipad"
+ },
+ {
+ "size": "20x20",
+ "scale": "2x",
+ "idiom": "ipad"
+ },
+ {
+ "size": "29x29",
+ "scale": "1x",
+ "idiom": "ipad"
+ },
+ {
+ "size": "29x29",
+ "scale": "2x",
+ "idiom": "ipad"
+ },
+ {
+ "size": "40x40",
+ "scale": "1x",
+ "idiom": "ipad"
+ },
+ {
+ "size": "40x40",
+ "scale": "2x",
+ "idiom": "ipad"
+ },
+ {
+ "filename": "icon-83.5x83.5@2x.png",
+ "size": "83.5x83.5",
+ "scale": "2x",
+ "idiom": "ipad"
+ },
+ {
+ "filename": "icon-76x76@1x.png",
+ "size": "76x76",
+ "scale": "1x",
+ "idiom": "ipad"
+ },
+ {
+ "filename": "icon-76x76@2x.png",
+ "size": "76x76",
+ "scale": "2x",
+ "idiom": "ipad"
+ },
+ {
+ "filename": "ios-marketing.png",
+ "size": "1024x1024",
+ "scale": "1x",
+ "idiom": "ios-marketing"
+ },
+ {
+ "size": "60x60",
+ "scale": "2x",
+ "idiom": "car"
+ },
+ {
+ "size": "60x60",
+ "scale": "3x",
+ "idiom": "car"
+ },
+ {
+ "role": "notificationCenter",
+ "size": "24x24",
+ "subtype": "38mm",
+ "scale": "2x",
+ "idiom": "watch"
+ },
+ {
+ "role": "notificationCenter",
+ "size": "27.5x27.5",
+ "subtype": "42mm",
+ "scale": "2x",
+ "idiom": "watch"
+ },
+ {
+ "role": "companionSettings",
+ "size": "29x29",
+ "scale": "2x",
+ "idiom": "watch"
+ },
+ {
+ "role": "companionSettings",
+ "size": "29x29",
+ "scale": "3x",
+ "idiom": "watch"
+ },
+ {
+ "role": "appLauncher",
+ "size": "40x40",
+ "subtype": "38mm",
+ "scale": "2x",
+ "idiom": "watch"
+ },
+ {
+ "role": "appLauncher",
+ "size": "44x44",
+ "subtype": "40mm",
+ "scale": "2x",
+ "idiom": "watch"
+ },
+ {
+ "role": "appLauncher",
+ "size": "50x50",
+ "subtype": "44mm",
+ "scale": "2x",
+ "idiom": "watch"
+ },
+ {
+ "role": "quickLook",
+ "size": "86x86",
+ "subtype": "38mm",
+ "scale": "2x",
+ "idiom": "watch"
+ },
+ {
+ "role": "quickLook",
+ "size": "98x98",
+ "subtype": "42mm",
+ "scale": "2x",
+ "idiom": "watch"
+ },
+ {
+ "role": "quickLook",
+ "size": "108x108",
+ "subtype": "44mm",
+ "scale": "2x",
+ "idiom": "watch"
+ },
+ {
+ "size": "1024x1024",
+ "scale": "1x",
+ "idiom": "watch-marketing"
+ },
+ {
+ "size": "16x16",
+ "scale": "1x",
+ "idiom": "mac"
+ },
+ {
+ "size": "16x16",
+ "scale": "2x",
+ "idiom": "mac"
+ },
+ {
+ "size": "32x32",
+ "scale": "1x",
+ "idiom": "mac"
+ },
+ {
+ "size": "32x32",
+ "scale": "2x",
+ "idiom": "mac"
+ },
+ {
+ "size": "128x128",
+ "scale": "1x",
+ "idiom": "mac"
+ },
+ {
+ "size": "128x128",
+ "scale": "2x",
+ "idiom": "mac"
+ },
+ {
+ "size": "256x256",
+ "scale": "1x",
+ "idiom": "mac"
+ },
+ {
+ "size": "256x256",
+ "scale": "2x",
+ "idiom": "mac"
+ },
+ {
+ "size": "512x512",
+ "scale": "1x",
+ "idiom": "mac"
+ },
+ {
+ "size": "512x512",
+ "scale": "2x",
+ "idiom": "mac"
+ }
+ ],
+ "info": {
+ "version": 1,
+ "author": "xcode"
+ }
+}
\ No newline at end of file
diff --git a/templates/content/blank-vswin/NewApp.iOS/Assets.xcassets/AppIcon.appiconset/icon-60x60@2x.png b/templates/content/blank-vswin/NewApp.iOS/Assets.xcassets/AppIcon.appiconset/icon-60x60@2x.png
new file mode 100644
index 000000000..8e01234b7
Binary files /dev/null and b/templates/content/blank-vswin/NewApp.iOS/Assets.xcassets/AppIcon.appiconset/icon-60x60@2x.png differ
diff --git a/templates/content/blank-vswin/NewApp.iOS/Assets.xcassets/AppIcon.appiconset/icon-60x60@3x.png b/templates/content/blank-vswin/NewApp.iOS/Assets.xcassets/AppIcon.appiconset/icon-60x60@3x.png
new file mode 100644
index 000000000..c9322f7fa
Binary files /dev/null and b/templates/content/blank-vswin/NewApp.iOS/Assets.xcassets/AppIcon.appiconset/icon-60x60@3x.png differ
diff --git a/templates/content/blank-vswin/NewApp.iOS/Assets.xcassets/AppIcon.appiconset/icon-76x76@1x.png b/templates/content/blank-vswin/NewApp.iOS/Assets.xcassets/AppIcon.appiconset/icon-76x76@1x.png
new file mode 100644
index 000000000..148b9499f
Binary files /dev/null and b/templates/content/blank-vswin/NewApp.iOS/Assets.xcassets/AppIcon.appiconset/icon-76x76@1x.png differ
diff --git a/templates/content/blank-vswin/NewApp.iOS/Assets.xcassets/AppIcon.appiconset/icon-76x76@2x.png b/templates/content/blank-vswin/NewApp.iOS/Assets.xcassets/AppIcon.appiconset/icon-76x76@2x.png
new file mode 100644
index 000000000..b3d185444
Binary files /dev/null and b/templates/content/blank-vswin/NewApp.iOS/Assets.xcassets/AppIcon.appiconset/icon-76x76@2x.png differ
diff --git a/templates/content/blank-vswin/NewApp.iOS/Assets.xcassets/AppIcon.appiconset/icon-83.5x83.5@2x.png b/templates/content/blank-vswin/NewApp.iOS/Assets.xcassets/AppIcon.appiconset/icon-83.5x83.5@2x.png
new file mode 100644
index 000000000..320b16e99
Binary files /dev/null and b/templates/content/blank-vswin/NewApp.iOS/Assets.xcassets/AppIcon.appiconset/icon-83.5x83.5@2x.png differ
diff --git a/templates/content/blank-vswin/NewApp.iOS/Assets.xcassets/AppIcon.appiconset/ios-marketing.png b/templates/content/blank-vswin/NewApp.iOS/Assets.xcassets/AppIcon.appiconset/ios-marketing.png
new file mode 100644
index 000000000..86016a1b7
Binary files /dev/null and b/templates/content/blank-vswin/NewApp.iOS/Assets.xcassets/AppIcon.appiconset/ios-marketing.png differ
diff --git a/templates/content/blank-vswin/NewApp.iOS/Entitlements.plist b/templates/content/blank-vswin/NewApp.iOS/Entitlements.plist
new file mode 100644
index 000000000..fa00fff6b
--- /dev/null
+++ b/templates/content/blank-vswin/NewApp.iOS/Entitlements.plist
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/templates/content/blank-vswin/NewApp.iOS/Info.plist b/templates/content/blank-vswin/NewApp.iOS/Info.plist
new file mode 100644
index 000000000..cd4a13e6f
--- /dev/null
+++ b/templates/content/blank-vswin/NewApp.iOS/Info.plist
@@ -0,0 +1,38 @@
+
+
+
+
+ UIDeviceFamily
+
+ 1
+ 2
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ MinimumOSVersion
+ 15.0
+ CFBundleDisplayName
+ NewApp
+ CFBundleIdentifier
+ com.companyname.NewApp.iOS
+ CFBundleVersion
+ 1
+ UILaunchStoryboardName
+ LaunchScreen
+ CFBundleName
+ NewApp
+ XSAppIconAssets
+ Assets.xcassets/AppIcon.appiconset
+
+
diff --git a/templates/content/blank-vswin/NewApp.iOS/NewApp.iOS.fsproj b/templates/content/blank-vswin/NewApp.iOS/NewApp.iOS.fsproj
new file mode 100644
index 000000000..f33277eaf
--- /dev/null
+++ b/templates/content/blank-vswin/NewApp.iOS/NewApp.iOS.fsproj
@@ -0,0 +1,165 @@
+
+
+
+ Debug
+ iPhoneSimulator
+ 8.0.30703
+ 2.0
+ {1069F96F-A42B-4CD8-8FA1-7F047C726B88}
+ {FEACFBD2-3405-455C-9665-78FE426C6842};{F2A71F9B-5D33-465A-A702-920D77279786}
+ Exe
+ NewApp.iOS
+ Resources
+ NewApp.iOS
+ NSUrlSessionHandler
+ true
+
+
+ true
+ full
+ false
+ bin\iPhoneSimulator\Debug
+ DEBUG
+ prompt
+ 4
+ false
+ x86_64
+ None
+ true
+
+
+ none
+ true
+ bin\iPhoneSimulator\Release
+ prompt
+ 4
+ None
+ x86_64
+ false
+
+
+ true
+ full
+ false
+ bin\iPhone\Debug
+ DEBUG
+ prompt
+ 4
+ false
+ ARM64
+ iPhone Developer
+ true
+ Entitlements.plist
+
+
+ none
+ true
+ bin\iPhone\Release
+ prompt
+ 4
+ ARM64
+ false
+ iPhone Developer
+ Entitlements.plist
+
+
+ none
+ True
+ bin\iPhone\Ad-Hoc
+ prompt
+ 4
+ False
+ ARM64
+ True
+ Automatic:AdHoc
+ iPhone Distribution
+ Entitlements.plist
+
+
+ none
+ True
+ bin\iPhone\AppStore
+ prompt
+ 4
+ False
+ ARM64
+ Automatic:AppStore
+ iPhone Distribution
+ Entitlements.plist
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..\packages\Fabulous.FabulousPkgsVersion\lib\netstandard2.1\Fabulous.dll
+
+
+ ..\packages\Fabulous.XamarinForms.FabulousPkgsVersion\lib\netstandard2.1\Fabulous.XamarinForms.dll
+
+
+ ..\packages\FSharp.Core.6.0.4\lib\netstandard2.1\FSharp.Core.dll
+
+
+
+
+ True
+
+
+
+ True
+
+
+
+ ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll
+
+
+
+
+ ..\packages\Xamarin.CommunityToolkit.2.0.2\lib\xamarinios10\Xamarin.CommunityToolkit.dll
+
+
+ ..\packages\Xamarin.Essentials.1.7.3\lib\xamarinios10\Xamarin.Essentials.dll
+
+
+ ..\packages\Xamarin.Forms.5.0.0.2401\lib\Xamarin.iOS10\Xamarin.Forms.Core.dll
+
+
+ ..\packages\Xamarin.Forms.5.0.0.2401\lib\Xamarin.iOS10\Xamarin.Forms.Platform.dll
+
+
+ ..\packages\Xamarin.Forms.5.0.0.2401\lib\Xamarin.iOS10\Xamarin.Forms.Platform.iOS.dll
+
+
+ ..\packages\Xamarin.Forms.5.0.0.2401\lib\Xamarin.iOS10\Xamarin.Forms.Xaml.dll
+
+
+
+
+
+ {99E19497-29A6-4B77-B773-BEC55F9B55DC}
+ NewApp
+
+
+
+
+
+ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/templates/content/blank-vswin/NewApp.iOS/Properties/AssemblyInfo.fs b/templates/content/blank-vswin/NewApp.iOS/Properties/AssemblyInfo.fs
new file mode 100644
index 000000000..f40fe1fc1
--- /dev/null
+++ b/templates/content/blank-vswin/NewApp.iOS/Properties/AssemblyInfo.fs
@@ -0,0 +1,32 @@
+namespace NewApp.iOS
+
+open System.Reflection
+open System.Runtime.CompilerServices
+open System.Runtime.InteropServices
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[]
+[]
+[]
+[]
+[]
+[]
+[]
+[]
+[]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// []
+[]
+[]
+do ()
diff --git a/templates/content/blank-vswin/NewApp.iOS/Resources/LaunchScreen.storyboard b/templates/content/blank-vswin/NewApp.iOS/Resources/LaunchScreen.storyboard
new file mode 100644
index 000000000..a639c2f1a
--- /dev/null
+++ b/templates/content/blank-vswin/NewApp.iOS/Resources/LaunchScreen.storyboard
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/templates/content/blank-vswin/NewApp.iOS/packages.config b/templates/content/blank-vswin/NewApp.iOS/packages.config
new file mode 100644
index 000000000..d417b0bb6
--- /dev/null
+++ b/templates/content/blank-vswin/NewApp.iOS/packages.config
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/templates/content/blank-vswin/NewApp.sln b/templates/content/blank-vswin/NewApp.sln
new file mode 100644
index 000000000..f8c535ba1
--- /dev/null
+++ b/templates/content/blank-vswin/NewApp.sln
@@ -0,0 +1,88 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.30114.105
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "NewApp", "NewApp\NewApp.fsproj", "{99E19497-29A6-4B77-B773-BEC55F9B55DC}"
+EndProject
+Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "NewApp.iOS", "NewApp.iOS\NewApp.iOS.fsproj", "{1069F96F-A42B-4CD8-8FA1-7F047C726B88}"
+EndProject
+Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "NewApp.Android", "NewApp.Android\NewApp.Android.fsproj", "{E26BCFA7-B118-4866-875B-F4364DF40545}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ Debug|iPhoneSimulator = Debug|iPhoneSimulator
+ Release|iPhoneSimulator = Release|iPhoneSimulator
+ Debug|iPhone = Debug|iPhone
+ Release|iPhone = Release|iPhone
+ Ad-Hoc|iPhone = Ad-Hoc|iPhone
+ AppStore|iPhone = AppStore|iPhone
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {99E19497-29A6-4B77-B773-BEC55F9B55DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {99E19497-29A6-4B77-B773-BEC55F9B55DC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {99E19497-29A6-4B77-B773-BEC55F9B55DC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {99E19497-29A6-4B77-B773-BEC55F9B55DC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {99E19497-29A6-4B77-B773-BEC55F9B55DC}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {99E19497-29A6-4B77-B773-BEC55F9B55DC}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {99E19497-29A6-4B77-B773-BEC55F9B55DC}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
+ {99E19497-29A6-4B77-B773-BEC55F9B55DC}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
+ {99E19497-29A6-4B77-B773-BEC55F9B55DC}.AppStore|iPhone.ActiveCfg = Release|Any CPU
+ {99E19497-29A6-4B77-B773-BEC55F9B55DC}.AppStore|iPhone.Build.0 = Release|Any CPU
+ {99E19497-29A6-4B77-B773-BEC55F9B55DC}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {99E19497-29A6-4B77-B773-BEC55F9B55DC}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {99E19497-29A6-4B77-B773-BEC55F9B55DC}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {99E19497-29A6-4B77-B773-BEC55F9B55DC}.Release|iPhone.Build.0 = Release|Any CPU
+ {99E19497-29A6-4B77-B773-BEC55F9B55DC}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {99E19497-29A6-4B77-B773-BEC55F9B55DC}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {1069F96F-A42B-4CD8-8FA1-7F047C726B88}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
+ {1069F96F-A42B-4CD8-8FA1-7F047C726B88}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator
+ {1069F96F-A42B-4CD8-8FA1-7F047C726B88}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator
+ {1069F96F-A42B-4CD8-8FA1-7F047C726B88}.Release|Any CPU.Build.0 = Release|iPhoneSimulator
+ {1069F96F-A42B-4CD8-8FA1-7F047C726B88}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
+ {1069F96F-A42B-4CD8-8FA1-7F047C726B88}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
+ {1069F96F-A42B-4CD8-8FA1-7F047C726B88}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
+ {1069F96F-A42B-4CD8-8FA1-7F047C726B88}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
+ {1069F96F-A42B-4CD8-8FA1-7F047C726B88}.Debug|iPhone.ActiveCfg = Debug|iPhone
+ {1069F96F-A42B-4CD8-8FA1-7F047C726B88}.Debug|iPhone.Build.0 = Debug|iPhone
+ {1069F96F-A42B-4CD8-8FA1-7F047C726B88}.Release|iPhone.ActiveCfg = Release|iPhone
+ {1069F96F-A42B-4CD8-8FA1-7F047C726B88}.Release|iPhone.Build.0 = Release|iPhone
+ {1069F96F-A42B-4CD8-8FA1-7F047C726B88}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone
+ {1069F96F-A42B-4CD8-8FA1-7F047C726B88}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone
+ {1069F96F-A42B-4CD8-8FA1-7F047C726B88}.AppStore|iPhone.ActiveCfg = AppStore|iPhone
+ {1069F96F-A42B-4CD8-8FA1-7F047C726B88}.AppStore|iPhone.Build.0 = AppStore|iPhone
+ {1069F96F-A42B-4CD8-8FA1-7F047C726B88}.Debug|iPhoneSimulator.Deploy.0 = Debug|iPhoneSimulator
+ {1069F96F-A42B-4CD8-8FA1-7F047C726B88}.Debug|Any CPU.Deploy.0 = Debug|iPhoneSimulator
+ {1069F96F-A42B-4CD8-8FA1-7F047C726B88}.Debug|iPhone.Deploy.0 = Debug|iPhone
+ {1069F96F-A42B-4CD8-8FA1-7F047C726B88}.Release|Any CPU.Deploy.0 = Release|iPhoneSimulator
+ {1069F96F-A42B-4CD8-8FA1-7F047C726B88}.Release|iPhone.Deploy.0 = Release|iPhone
+ {1069F96F-A42B-4CD8-8FA1-7F047C726B88}.Release|iPhoneSimulator.Deploy.0 = Release|iPhoneSimulator
+ {E26BCFA7-B118-4866-875B-F4364DF40545}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E26BCFA7-B118-4866-875B-F4364DF40545}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E26BCFA7-B118-4866-875B-F4364DF40545}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E26BCFA7-B118-4866-875B-F4364DF40545}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E26BCFA7-B118-4866-875B-F4364DF40545}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {E26BCFA7-B118-4866-875B-F4364DF40545}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {E26BCFA7-B118-4866-875B-F4364DF40545}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {E26BCFA7-B118-4866-875B-F4364DF40545}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {E26BCFA7-B118-4866-875B-F4364DF40545}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {E26BCFA7-B118-4866-875B-F4364DF40545}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {E26BCFA7-B118-4866-875B-F4364DF40545}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {E26BCFA7-B118-4866-875B-F4364DF40545}.Release|iPhone.Build.0 = Release|Any CPU
+ {E26BCFA7-B118-4866-875B-F4364DF40545}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
+ {E26BCFA7-B118-4866-875B-F4364DF40545}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
+ {E26BCFA7-B118-4866-875B-F4364DF40545}.AppStore|iPhone.ActiveCfg = Release|Any CPU
+ {E26BCFA7-B118-4866-875B-F4364DF40545}.AppStore|iPhone.Build.0 = Release|Any CPU
+ {E26BCFA7-B118-4866-875B-F4364DF40545}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
+ {E26BCFA7-B118-4866-875B-F4364DF40545}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+ {E26BCFA7-B118-4866-875B-F4364DF40545}.Debug|iPhone.Deploy.0 = Debug|Any CPU
+ {E26BCFA7-B118-4866-875B-F4364DF40545}.Release|Any CPU.Deploy.0 = Release|Any CPU
+ {E26BCFA7-B118-4866-875B-F4364DF40545}.Release|iPhone.Deploy.0 = Release|Any CPU
+ {E26BCFA7-B118-4866-875B-F4364DF40545}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
+ EndGlobalSection
+EndGlobal
diff --git a/templates/content/blank-vswin/NewApp/App.fs b/templates/content/blank-vswin/NewApp/App.fs
new file mode 100644
index 000000000..391c7bac1
--- /dev/null
+++ b/templates/content/blank-vswin/NewApp/App.fs
@@ -0,0 +1,43 @@
+namespace NewApp
+
+open Xamarin.Forms
+open Fabulous.XamarinForms
+
+open type View
+
+module App =
+ type Model = { Count: int }
+
+ type Msg =
+ | Increment
+ | Decrement
+
+ let init () = { Count = 0 }
+
+ let update msg model =
+ match msg with
+ | Increment -> { model with Count = model.Count + 1 }
+ | Decrement -> { model with Count = model.Count - 1 }
+
+ let view model =
+ Application(
+ ContentPage(
+ "NewApp",
+ VStack() {
+ Label("Hello from Fabulous v2!")
+ .font(namedSize = NamedSize.Title)
+ .centerTextHorizontal()
+
+ (VStack() {
+ Label($"Count is {model.Count}")
+ .centerTextHorizontal()
+
+ Button("Increment", Increment)
+ Button("Decrement", Decrement)
+ })
+ .centerVertical(expand = true)
+ }
+ )
+ )
+
+ let program = Program.stateful init update view
diff --git a/templates/content/blank-vswin/NewApp/NewApp.fsproj b/templates/content/blank-vswin/NewApp/NewApp.fsproj
new file mode 100644
index 000000000..7ebae0085
--- /dev/null
+++ b/templates/content/blank-vswin/NewApp/NewApp.fsproj
@@ -0,0 +1,16 @@
+
+
+ netstandard2.1
+ false
+ true
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/templates/content/blank/.template.config/template.json b/templates/content/blank/.template.config/template.json
index 66c3abc38..f7772e4db 100644
--- a/templates/content/blank/.template.config/template.json
+++ b/templates/content/blank/.template.config/template.json
@@ -81,11 +81,11 @@
"replaces": "XamarinCommunityToolkitSdk",
"defaultValue": "1.3.2"
},
- "XamarinAndroidFSharpResourceProviderSdk": {
+ "FSharpAndroidResourceSdk": {
"type": "parameter",
"dataType": "string",
- "replaces": "XamarinAndroidFSharpResourceProviderSdk",
- "defaultValue": "1.0.0.28"
+ "replaces": "FSharpAndroidResourceSdk",
+ "defaultValue": "1.0.4"
}
}
}
\ No newline at end of file
diff --git a/templates/content/blank/NewApp.Android/AssemblyInfo.fs b/templates/content/blank/NewApp.Android/AssemblyInfo.fs
index 5a12e25c5..cbabcef5b 100644
--- a/templates/content/blank/NewApp.Android/AssemblyInfo.fs
+++ b/templates/content/blank/NewApp.Android/AssemblyInfo.fs
@@ -5,11 +5,6 @@ open System.Runtime.CompilerServices
open System.Runtime.InteropServices
open Android.App
-// the name of the type here needs to match the name inside the ResourceDesigner attribute
-type Resources = NewApp.Android.Resource
-
-[]
-
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
diff --git a/templates/content/blank/NewApp.Android/MainActivity.fs b/templates/content/blank/NewApp.Android/MainActivity.fs
index 81631f64d..35fbe65c5 100644
--- a/templates/content/blank/NewApp.Android/MainActivity.fs
+++ b/templates/content/blank/NewApp.Android/MainActivity.fs
@@ -23,9 +23,11 @@ open Xamarin.Forms.Platform.Android
type MainActivity() =
inherit FormsAppCompatActivity()
+ do NewApp.Android.Resource.UpdateIdValues()
+
override this.OnCreate(bundle: Bundle) =
- FormsAppCompatActivity.TabLayoutResource <- Resources.Layout.Tabbar
- FormsAppCompatActivity.ToolbarResource <- Resources.Layout.Toolbar
+ FormsAppCompatActivity.TabLayoutResource <- NewApp.Android.Resource.Layout.Tabbar
+ FormsAppCompatActivity.ToolbarResource <- NewApp.Android.Resource.Layout.Toolbar
base.OnCreate(bundle)
Xamarin.Essentials.Platform.Init(this, bundle)
diff --git a/templates/content/blank/NewApp.Android/NewApp.Android.fsproj b/templates/content/blank/NewApp.Android/NewApp.Android.fsproj
index e9a672c44..4b84f2d04 100644
--- a/templates/content/blank/NewApp.Android/NewApp.Android.fsproj
+++ b/templates/content/blank/NewApp.Android/NewApp.Android.fsproj
@@ -19,6 +19,7 @@
Assets
true
None
+ true
true
@@ -77,8 +78,8 @@
-
-
+
+
diff --git a/templates/content/blank/NewApp.iOS/AppDelegate.fs b/templates/content/blank/NewApp.iOS/AppDelegate.fs
index d108a8a58..b0992c257 100644
--- a/templates/content/blank/NewApp.iOS/AppDelegate.fs
+++ b/templates/content/blank/NewApp.iOS/AppDelegate.fs
@@ -15,7 +15,7 @@ type AppDelegate() =
override this.FinishedLaunching(app, options) =
Forms.Init()
- this.LoadApplication(Program.createApplication App.program)
+ this.LoadApplication(Program.startApplication App.program)
base.FinishedLaunching(app, options)
module Main =
diff --git a/templates/content/blank/NewApp.iOS/NewApp.iOS.fsproj b/templates/content/blank/NewApp.iOS/NewApp.iOS.fsproj
index 6a796ce22..99dcb7a34 100644
--- a/templates/content/blank/NewApp.iOS/NewApp.iOS.fsproj
+++ b/templates/content/blank/NewApp.iOS/NewApp.iOS.fsproj
@@ -12,6 +12,7 @@
Resources
NewApp.iOS
NSUrlSessionHandler
+ true
true
@@ -110,7 +111,7 @@
-
+
diff --git a/templates/content/blank/NewApp/NewApp.fsproj b/templates/content/blank/NewApp/NewApp.fsproj
index f34ad6f99..98142a6f3 100644
--- a/templates/content/blank/NewApp/NewApp.fsproj
+++ b/templates/content/blank/NewApp/NewApp.fsproj
@@ -2,11 +2,12 @@
netstandard2.1
false
+ true
-
+