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 - +