From be3db793f2847c189ca471b4a9e6a1e624857894 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9=20Larivi=C3=A8re?= Date: Thu, 2 Jun 2022 09:24:38 +0200 Subject: [PATCH 1/6] Add templates compatible with VS Windows --- templates/content/blank-vswin/.gitignore | 454 ++++++++++++++++++ .../.template.config/dotnetcli.host.json | 3 + .../.template.config/template.json | 61 +++ .../NewApp.Android/AssemblyInfo.fs | 37 ++ .../NewApp.Android/Assets/AboutAssets.txt | 19 + .../NewApp.Android/MainActivity.fs | 44 ++ .../NewApp.Android/NewApp.Android.fsproj | 404 ++++++++++++++++ .../Properties/AndroidManifest.xml | 5 + .../Resources/AboutResources.txt | 50 ++ .../Resources/drawable-hdpi/icon.png | Bin 0 -> 3106 bytes .../Resources/drawable-xhdpi/icon.png | Bin 0 -> 4060 bytes .../Resources/drawable-xxhdpi/icon.png | Bin 0 -> 6086 bytes .../Resources/drawable/icon.png | Bin 0 -> 2117 bytes .../Resources/layout/Tabbar.axml | 11 + .../Resources/layout/Toolbar.axml | 9 + .../Resources/values/colors.xml | 7 + .../Resources/values/styles.xml | 30 ++ .../NewApp.Android/packages.config | 69 +++ .../blank-vswin/NewApp.iOS/AppDelegate.fs | 25 + .../AppIcon.appiconset/Contents.json | 237 +++++++++ .../AppIcon.appiconset/icon-60x60@2x.png | Bin 0 -> 4060 bytes .../AppIcon.appiconset/icon-60x60@3x.png | Bin 0 -> 6086 bytes .../AppIcon.appiconset/icon-76x76@1x.png | Bin 0 -> 2669 bytes .../AppIcon.appiconset/icon-76x76@2x.png | Bin 0 -> 5174 bytes .../AppIcon.appiconset/icon-83.5x83.5@2x.png | Bin 0 -> 5646 bytes .../AppIcon.appiconset/ios-marketing.png | Bin 0 -> 28560 bytes .../blank-vswin/NewApp.iOS/Entitlements.plist | 7 + .../content/blank-vswin/NewApp.iOS/Info.plist | 38 ++ .../blank-vswin/NewApp.iOS/NewApp.iOS.fsproj | 164 +++++++ .../NewApp.iOS/Properties/AssemblyInfo.fs | 32 ++ .../Resources/LaunchScreen.storyboard | 39 ++ .../blank-vswin/NewApp.iOS/packages.config | 13 + templates/content/blank-vswin/NewApp.sln | 88 ++++ templates/content/blank-vswin/NewApp/App.fs | 43 ++ .../content/blank-vswin/NewApp/NewApp.fsproj | 16 + .../blank/NewApp.Android/AssemblyInfo.fs | 5 - .../blank/NewApp.Android/MainActivity.fs | 6 +- .../NewApp.Android/NewApp.Android.fsproj | 5 +- .../blank/NewApp.iOS/NewApp.iOS.fsproj | 3 +- templates/content/blank/NewApp/NewApp.fsproj | 3 +- 40 files changed, 1916 insertions(+), 11 deletions(-) create mode 100644 templates/content/blank-vswin/.gitignore create mode 100644 templates/content/blank-vswin/.template.config/dotnetcli.host.json create mode 100644 templates/content/blank-vswin/.template.config/template.json create mode 100644 templates/content/blank-vswin/NewApp.Android/AssemblyInfo.fs create mode 100644 templates/content/blank-vswin/NewApp.Android/Assets/AboutAssets.txt create mode 100644 templates/content/blank-vswin/NewApp.Android/MainActivity.fs create mode 100644 templates/content/blank-vswin/NewApp.Android/NewApp.Android.fsproj create mode 100644 templates/content/blank-vswin/NewApp.Android/Properties/AndroidManifest.xml create mode 100644 templates/content/blank-vswin/NewApp.Android/Resources/AboutResources.txt create mode 100644 templates/content/blank-vswin/NewApp.Android/Resources/drawable-hdpi/icon.png create mode 100644 templates/content/blank-vswin/NewApp.Android/Resources/drawable-xhdpi/icon.png create mode 100644 templates/content/blank-vswin/NewApp.Android/Resources/drawable-xxhdpi/icon.png create mode 100644 templates/content/blank-vswin/NewApp.Android/Resources/drawable/icon.png create mode 100644 templates/content/blank-vswin/NewApp.Android/Resources/layout/Tabbar.axml create mode 100644 templates/content/blank-vswin/NewApp.Android/Resources/layout/Toolbar.axml create mode 100644 templates/content/blank-vswin/NewApp.Android/Resources/values/colors.xml create mode 100644 templates/content/blank-vswin/NewApp.Android/Resources/values/styles.xml create mode 100644 templates/content/blank-vswin/NewApp.Android/packages.config create mode 100644 templates/content/blank-vswin/NewApp.iOS/AppDelegate.fs create mode 100644 templates/content/blank-vswin/NewApp.iOS/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 templates/content/blank-vswin/NewApp.iOS/Assets.xcassets/AppIcon.appiconset/icon-60x60@2x.png create mode 100644 templates/content/blank-vswin/NewApp.iOS/Assets.xcassets/AppIcon.appiconset/icon-60x60@3x.png create mode 100644 templates/content/blank-vswin/NewApp.iOS/Assets.xcassets/AppIcon.appiconset/icon-76x76@1x.png create mode 100644 templates/content/blank-vswin/NewApp.iOS/Assets.xcassets/AppIcon.appiconset/icon-76x76@2x.png create mode 100644 templates/content/blank-vswin/NewApp.iOS/Assets.xcassets/AppIcon.appiconset/icon-83.5x83.5@2x.png create mode 100644 templates/content/blank-vswin/NewApp.iOS/Assets.xcassets/AppIcon.appiconset/ios-marketing.png create mode 100644 templates/content/blank-vswin/NewApp.iOS/Entitlements.plist create mode 100644 templates/content/blank-vswin/NewApp.iOS/Info.plist create mode 100644 templates/content/blank-vswin/NewApp.iOS/NewApp.iOS.fsproj create mode 100644 templates/content/blank-vswin/NewApp.iOS/Properties/AssemblyInfo.fs create mode 100644 templates/content/blank-vswin/NewApp.iOS/Resources/LaunchScreen.storyboard create mode 100644 templates/content/blank-vswin/NewApp.iOS/packages.config create mode 100644 templates/content/blank-vswin/NewApp.sln create mode 100644 templates/content/blank-vswin/NewApp/App.fs create mode 100644 templates/content/blank-vswin/NewApp/NewApp.fsproj 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..bc8dd73cd --- /dev/null +++ b/templates/content/blank-vswin/.template.config/template.json @@ -0,0 +1,61 @@ +{ + "author": "fsprojects", + "classifications": [ + "Fabulous", + "Xamarin.Forms" + ], + "name": "Fabulous XF Blank VS Windows", + "groupIdentity": "Fabulous.XamarinForms.App.Blank", + "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..84c862c86 --- /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.FABULOUS_PKG_VERSION\lib\netstandard2.1\Fabulous.dll + + + ..\packages\Fabulous.XamarinForms.FABULOUS_PKG_VERSION\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 0000000000000000000000000000000000000000..a7a5acbf49444027a8ffc85ebca88d71cf35e489 GIT binary patch literal 3106 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..8e01234b78941abf65f34e52a4b89be4d249c426 GIT binary patch literal 4060 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 literal 0 HcmV?d00001 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..eb9b2698a --- /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..d108a8a58 --- /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.createApplication 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 0000000000000000000000000000000000000000..8e01234b78941abf65f34e52a4b89be4d249c426 GIT binary patch literal 4060 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 b0s#L3o?L(Lvs0v700000NkvXXu0mjfu>}f5 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..b3d185444c6db501f58c1b311e81703a8a639443 GIT binary patch literal 5174 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 bFCGeC;)#a`5Py9%crjF!z=}2UmSO(`A$tYk literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..86016a1b70a3ee0d54dd6c921fb107c9a77156b8 GIT binary patch literal 28560 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 z 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 + + + + + + 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..c9111cf70 --- /dev/null +++ b/templates/content/blank-vswin/NewApp.iOS/NewApp.iOS.fsproj @@ -0,0 +1,164 @@ + + + + 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.FABULOUS_PKG_VERSION\lib\netstandard2.1\Fabulous.dll + + + ..\packages\Fabulous.XamarinForms.FABULOUS_PKG_VERSION\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..4397dc9b8 --- /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..722c0414a --- /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/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/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 - + From e15220cd04e47343b48b895ad69669f307e87ba9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9=20Larivi=C3=A8re?= Date: Thu, 2 Jun 2022 09:35:58 +0200 Subject: [PATCH 2/6] Fix build error on iOS --- templates/content/blank-vswin/NewApp.iOS/AppDelegate.fs | 2 +- templates/content/blank/NewApp.iOS/AppDelegate.fs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/content/blank-vswin/NewApp.iOS/AppDelegate.fs b/templates/content/blank-vswin/NewApp.iOS/AppDelegate.fs index d108a8a58..b0992c257 100644 --- a/templates/content/blank-vswin/NewApp.iOS/AppDelegate.fs +++ b/templates/content/blank-vswin/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/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 = From 9b031f2b02ae41afe9e5d461328647de705b4921 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9=20Larivi=C3=A8re?= Date: Thu, 2 Jun 2022 09:38:50 +0200 Subject: [PATCH 3/6] Update getting started --- docs/content/en/v2/getting-started/index.md | 2 ++ 1 file changed, 2 insertions(+) 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. From 9ba21d6e8fd900ee01672f8d1393ce554491f950 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9=20Larivi=C3=A8re?= Date: Thu, 2 Jun 2022 10:15:15 +0200 Subject: [PATCH 4/6] Make sure the vswin template work --- .github/workflows/build.yml | 2 +- .github/workflows/release.yml | 2 +- .../content/blank-vswin/.template.config/template.json | 4 ++-- .../blank-vswin/NewApp.Android/NewApp.Android.fsproj | 4 ++-- .../content/blank-vswin/NewApp.Android/packages.config | 4 ++-- templates/content/blank-vswin/NewApp.iOS/NewApp.iOS.fsproj | 7 ++++--- templates/content/blank-vswin/NewApp.iOS/packages.config | 4 ++-- templates/content/blank-vswin/NewApp/NewApp.fsproj | 2 +- templates/content/blank/.template.config/template.json | 6 +++--- 9 files changed, 18 insertions(+), 17 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 088565edf..1354d8b84 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.0-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..4cc5af61a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -28,7 +28,7 @@ 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 diff --git a/templates/content/blank-vswin/.template.config/template.json b/templates/content/blank-vswin/.template.config/template.json index bc8dd73cd..a3acb2263 100644 --- a/templates/content/blank-vswin/.template.config/template.json +++ b/templates/content/blank-vswin/.template.config/template.json @@ -4,8 +4,8 @@ "Fabulous", "Xamarin.Forms" ], - "name": "Fabulous XF Blank VS Windows", - "groupIdentity": "Fabulous.XamarinForms.App.Blank", + "name": "Fabulous XF VS Windows", + "groupIdentity": "Fabulous.XamarinForms.App.BlankVsWin", "identity": "Fabulous.XamarinForms.BlankVsWin", "shortName": "fabulous-xf-vswin", "tags": { diff --git a/templates/content/blank-vswin/NewApp.Android/NewApp.Android.fsproj b/templates/content/blank-vswin/NewApp.Android/NewApp.Android.fsproj index 84c862c86..1493a832a 100644 --- a/templates/content/blank-vswin/NewApp.Android/NewApp.Android.fsproj +++ b/templates/content/blank-vswin/NewApp.Android/NewApp.Android.fsproj @@ -70,10 +70,10 @@ - ..\packages\Fabulous.FABULOUS_PKG_VERSION\lib\netstandard2.1\Fabulous.dll + ..\packages\Fabulous.FabulousPkgsVersion\lib\netstandard2.1\Fabulous.dll - ..\packages\Fabulous.XamarinForms.FABULOUS_PKG_VERSION\lib\netstandard2.1\Fabulous.XamarinForms.dll + ..\packages\Fabulous.XamarinForms.FabulousPkgsVersion\lib\netstandard2.1\Fabulous.XamarinForms.dll ..\packages\Xamarin.Forms.5.0.0.2401\lib\MonoAndroid10.0\FormsViewGroup.dll diff --git a/templates/content/blank-vswin/NewApp.Android/packages.config b/templates/content/blank-vswin/NewApp.Android/packages.config index eb9b2698a..70befd182 100644 --- a/templates/content/blank-vswin/NewApp.Android/packages.config +++ b/templates/content/blank-vswin/NewApp.Android/packages.config @@ -1,7 +1,7 @@ - - + + diff --git a/templates/content/blank-vswin/NewApp.iOS/NewApp.iOS.fsproj b/templates/content/blank-vswin/NewApp.iOS/NewApp.iOS.fsproj index c9111cf70..f33277eaf 100644 --- a/templates/content/blank-vswin/NewApp.iOS/NewApp.iOS.fsproj +++ b/templates/content/blank-vswin/NewApp.iOS/NewApp.iOS.fsproj @@ -1,4 +1,4 @@ - + Debug @@ -104,10 +104,10 @@ - ..\packages\Fabulous.FABULOUS_PKG_VERSION\lib\netstandard2.1\Fabulous.dll + ..\packages\Fabulous.FabulousPkgsVersion\lib\netstandard2.1\Fabulous.dll - ..\packages\Fabulous.XamarinForms.FABULOUS_PKG_VERSION\lib\netstandard2.1\Fabulous.XamarinForms.dll + ..\packages\Fabulous.XamarinForms.FabulousPkgsVersion\lib\netstandard2.1\Fabulous.XamarinForms.dll ..\packages\FSharp.Core.6.0.4\lib\netstandard2.1\FSharp.Core.dll @@ -145,6 +145,7 @@ ..\packages\Xamarin.Forms.5.0.0.2401\lib\Xamarin.iOS10\Xamarin.Forms.Xaml.dll + diff --git a/templates/content/blank-vswin/NewApp.iOS/packages.config b/templates/content/blank-vswin/NewApp.iOS/packages.config index 4397dc9b8..d417b0bb6 100644 --- a/templates/content/blank-vswin/NewApp.iOS/packages.config +++ b/templates/content/blank-vswin/NewApp.iOS/packages.config @@ -1,7 +1,7 @@ - - + + diff --git a/templates/content/blank-vswin/NewApp/NewApp.fsproj b/templates/content/blank-vswin/NewApp/NewApp.fsproj index 722c0414a..7ebae0085 100644 --- a/templates/content/blank-vswin/NewApp/NewApp.fsproj +++ b/templates/content/blank-vswin/NewApp/NewApp.fsproj @@ -8,7 +8,7 @@ - + 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 From 0c326d1608a8aa94c00ebc56a4565ad5ca448f5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9=20Larivi=C3=A8re?= Date: Thu, 2 Jun 2022 10:27:58 +0200 Subject: [PATCH 5/6] Disable push for testing --- .github/workflows/release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4cc5af61a..1b8b90eb3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -31,6 +31,6 @@ jobs: 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 From 00a26327798f84d84e5ac1491a9fe639c200f1d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9=20Larivi=C3=A8re?= Date: Thu, 2 Jun 2022 10:29:51 +0200 Subject: [PATCH 6/6] Bump to 2.0.1 --- .github/workflows/build.yml | 2 +- src/Fabulous.XamarinForms/Fabulous.XamarinForms.fsproj | 2 +- src/Fabulous/Fabulous.fsproj | 2 +- templates/Fabulous.XamarinForms.Templates.proj | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1354d8b84..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/*/.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/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