diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..795fc0a
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,58 @@
+name: Release
+on:
+ push:
+ tags: ['[0-9]+.[0-9]+.[0-9]+', '[0-9]+.[0-9]+.[0-9]+-pre[0-9]+']
+ paths-ignore: [ 'docs/**' ]
+
+permissions: write-all
+
+env:
+ CONFIG: Release
+ TEMPLATE_PROJ: templates/FSharp.Mobile.Templates.proj
+
+jobs:
+ release:
+ runs-on: macos-13
+ environment: nuget
+ steps:
+ - name: Checkout sources
+ uses: actions/checkout@v3
+ - name: Extract version from tag
+ uses: damienaicheh/extract-version-from-tag-action@v1.0.0
+ - name: Set release version
+ run: |
+ if [ "${PRE_RELEASE}" == "" ]; then
+ RELEASE_VERSION=${MAJOR}.${MINOR}.${PATCH}
+ else
+ RELEASE_VERSION=${MAJOR}.${MINOR}.${PATCH}-${PRE_RELEASE}
+ fi
+ echo "Release version is $RELEASE_VERSION"
+ echo "RELEASE_VERSION=$RELEASE_VERSION" >> "$GITHUB_ENV"
+ - name: Get FSharp.Mobile.Templates Changelog Entry
+ id: templates_changelog
+ uses: mindsers/changelog-reader-action@v2
+ with:
+ validation_level: warn
+ version: '${{ env.RELEASE_VERSION }}'
+ path: templates/CHANGELOG.md
+ - name: Setup .NET
+ uses: actions/setup-dotnet@v3
+ with:
+ dotnet-version: 8.0.x
+ - name: Install dotnet workload
+ run: dotnet workload restore
+ - name: Restore
+ run: dotnet restore ${SLN_FILE}
+ - name: Build
+ run: dotnet build ${SLN_FILE} -p:Version=${RELEASE_VERSION} -c ${CONFIG} --no-restore
+ - name: Pack
+ run: |
+ find templates -type f -name template.json | xargs sed -i bak "s/PKG_VERSION/${RELEASE_VERSION}/g"
+ dotnet pack ${TEMPLATE_PROJ} -p:Version=${RELEASE_VERSION} -p:PackageReleaseNotes="${{ steps.templates_changelog.outputs.changes }}" -c ${CONFIG} --property PackageOutputPath=${PWD}/nupkgs
+ - name: Upload artifacts
+ uses: actions/upload-artifact@v3
+ with:
+ name: Packages
+ path: nupkgs/
+ - name: Push
+ run: dotnet nuget push "nupkgs/*" -s https://api.nuget.org/v3/index.json -k ${{ secrets.NUGET_TOKEN }} --skip-duplicate
\ No newline at end of file
diff --git a/.github/workflows/templates.yml b/.github/workflows/templates.yml
index cc1cb28..40b6df7 100644
--- a/.github/workflows/templates.yml
+++ b/.github/workflows/templates.yml
@@ -12,7 +12,7 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@v1
with:
- dotnet-version: 7.0.x
+ dotnet-version: 8.0.x
- name: Pack
run: dotnet pack FSharp.Mobile.Templates.proj --configuration Release --version-suffix "nightly-${GITHUB_RUN_ID}" --property PackageOutputPath=${PWD}/nupkgs
- name: Push
@@ -29,8 +29,8 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@v1
with:
- dotnet-version: 7.0.x
+ dotnet-version: 8.0.x
- name: Pack
- run: dotnet pack FSharp.Mobile.Templates.proj --configuration Release--property PackageOutputPath=${PWD}/nupkgs
+ run: dotnet pack FSharp.Mobile.Templates.proj --configuration Release --property PackageOutputPath=${PWD}/nupkgs
- name: Push
run: dotnet nuget push "nupkgs/*" --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET_TOKEN }} --skip-duplicate
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..e883f6f
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,18 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [Unreleased]
+_No unreleased changes_
+
+## [8.0.0] - 2023-12-14
+
+### Added
+- Update NET8.0 and F# 8.0
+
+[unreleased]: https://github.com/fabulous-dev/FSharp.Mobile.Templates/compare/8.0.0...HEAD
+[8.0.0]: https://github.com/fabulous-dev/FSharp.Mobile.Templates/releases/tag/8.0.0
+
diff --git a/FSharp.Mobile.Templates.proj b/FSharp.Mobile.Templates.proj
index 41b8f60..c9ae577 100644
--- a/FSharp.Mobile.Templates.proj
+++ b/FSharp.Mobile.Templates.proj
@@ -13,7 +13,7 @@
true
false
true
- 1.1.2
+ 8.0.0
netstandard2.0
$(NoWarn);NU5128
true
diff --git a/README.md b/README.md
index 168dd56..4da9b17 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# FSharp.Mobile.Templates
-In this repository, you can find all the templates for creating mobile and desktop apps using .NET 7.0 and F# 7.0.
+In this repository, you can find all the templates for creating mobile and desktop apps using .NET 8.0 and F# 8.0.
Please note that those templates are "plain" F# templates, no additional dependencies. If you are interested in the Fabulous templates you can use:
@@ -8,9 +8,6 @@ Please note that those templates are "plain" F# templates, no additional depende
- [Fabulous.MauiControls templates](https://github.com/fabulous-dev/Fabulous.MauiControls)
- [Fabulous.Avalonia templates](https://github.com/fabulous-dev/Fabulous.Avalonia)
-NB. The Xamarin.Forms template will stay on .NET 6.0.
-Microsoft never intended to migrate Xamarin.Forms from Mono to .NET 6.0/7.0, making it hard to upgrade to .NET 7.0.
-
### Prerequisites
In order to build and run the Android and iOS projects, you need to install the corresponding workloads
```
@@ -20,22 +17,12 @@ dotnet workload install maccatalyst
dotnet workload install maui
```
-For the Xamarin.Forms template, you'll also need to go into the file `nuget.config` and replace `USERNAME` with your GitHub username and `TOKEN` with your personal access token.
-See https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-nuget-registry#authenticating-with-a-personal-access-token
-
### Available templates
- Android
- iOS
- Mac Catalyst
-- Xamarin.Forms (Android, iOS)
- Maui (Android, iOS, Mac Catalyst, Windows, Tizen)
-### Known issues
-
-- First build fails on Android (native, XF and MAUI)
- - You need to compile 2 times to get it working. It's a current limitation of FSharp.Android.Resource used to expose the resources.
- - You might also need to unload/reopen either the Android project or the solution for Intellisense to find the resources
-
### Install
```
@@ -54,7 +41,6 @@ Template Name Short Name Language Tags
---------------------------- ------------------- -------- -------------
F# Android Application android-fsharp F# FSharp.Mobile
F# iOS Application ios-fsharp F# FSharp.Mobile
-F# Xamarin.Forms Application xf-fsharp F# FSharp.Mobile
F# Maui Application maui-fsharp F# FSharp.Mobile
F# Mac Catalyst Application maccatalyst-fsharp F# FSharp.Mobile
```
@@ -79,7 +65,7 @@ To build and test the templates locally:
```
$ dotnet pack -c Release
-$ dotnet new -i .\bin\Release\FSharp.Mobile.Templates.1.1.0.nupkg
+$ dotnet new -i .\bin\Release\FSharp.Mobile.Templates.8.0.0.nupkg
```
### Acknowledgements
diff --git a/templates/Android/App.Android.fsproj b/templates/Android/App.Android.fsproj
index 9cad239..f60dc22 100644
--- a/templates/Android/App.Android.fsproj
+++ b/templates/Android/App.Android.fsproj
@@ -1,7 +1,7 @@
- net7.0-android
+ net8.0-android
Exe
true
@@ -10,7 +10,6 @@
-
-
+
diff --git a/templates/MacCatalyst/App.MacCatalyst.fsproj b/templates/MacCatalyst/App.MacCatalyst.fsproj
index 0ba9151..79bf9ee 100644
--- a/templates/MacCatalyst/App.MacCatalyst.fsproj
+++ b/templates/MacCatalyst/App.MacCatalyst.fsproj
@@ -1,7 +1,8 @@
- net7.0-maccatalyst
+ net8.0-maccatalyst
Exe
+ true
@@ -32,4 +33,7 @@
+
+
+
diff --git a/templates/MacCatalyst/AppDelegate.fs b/templates/MacCatalyst/AppDelegate.fs
index ca2386a..b27ae13 100644
--- a/templates/MacCatalyst/AppDelegate.fs
+++ b/templates/MacCatalyst/AppDelegate.fs
@@ -22,7 +22,7 @@ type AppDelegate() =
UIColor.White
label.TextAlignment <- UITextAlignment.Center
- label.Text <- "Hello, .NET 7 and F# 7!"
+ label.Text <- "Hello, .NET 8 and F# 8!"
vc.View.AddSubview(label)
this.Window.RootViewController <- vc
diff --git a/templates/Maui/MauiAppFSharp.fsproj b/templates/Maui/MauiAppFSharp.fsproj
index b879f6f..477cc0f 100644
--- a/templates/Maui/MauiAppFSharp.fsproj
+++ b/templates/Maui/MauiAppFSharp.fsproj
@@ -1,10 +1,10 @@
- net7.0-android;net7.0-ios;net7.0-maccatalyst
- $(TargetFrameworks);net7.0-windows10.0.19041.0
+ net8.0-android;net8.0-ios;net8.0-maccatalyst
+ $(TargetFrameworks);net8.0-windows10.0.19041.0
-
+
Exe
MauiAppFSharp
true
@@ -72,7 +72,7 @@
-
+
@@ -83,8 +83,6 @@
-
-
diff --git a/templates/Maui/Platforms/Android/MainApplication.fs b/templates/Maui/Platforms/Android/MainApplication.fs
index b1eed59..6efd967 100644
--- a/templates/Maui/Platforms/Android/MainApplication.fs
+++ b/templates/Maui/Platforms/Android/MainApplication.fs
@@ -6,7 +6,5 @@ open Microsoft.Maui
[]
type MainApplication(handle, ownership) =
inherit MauiApplication(handle, ownership)
-
- do MauiAppFSharp.Resource.UpdateIdValues()
override _.CreateMauiApp() = MauiProgram.CreateMauiApp()
\ No newline at end of file
diff --git a/templates/Xamarin.Forms/.template.config/template.json b/templates/Xamarin.Forms/.template.config/template.json
deleted file mode 100644
index 55e8985..0000000
--- a/templates/Xamarin.Forms/.template.config/template.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "$schema": "http://json.schemastore.org/template",
- "author": "Fabulous contributors",
- "classifications": [ "FSharp.Mobile" ],
- "name": "F# Xamarin.Forms Application",
- "identity": "FSharp.Mobile.Templates.XamarinForms",
- "groupIdentity": "FSharp.Mobile.Templates.XamarinForms",
- "shortName": "xf-fsharp",
- "tags": {
- "language": "F#",
- "type": "project"
- },
- "sourceName": "XFApp",
- "preferNameDirectory": true,
- "sources": [
- {
- "include": ["**"],
- "exclude": [
- ".template.config/**/*",
- "[Bb]in/**/*",
- "[Oo]bj/**/*"
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/templates/Xamarin.Forms/Android/AndroidManifest.xml b/templates/Xamarin.Forms/Android/AndroidManifest.xml
deleted file mode 100644
index c358625..0000000
--- a/templates/Xamarin.Forms/Android/AndroidManifest.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/templates/Xamarin.Forms/Android/Assets/AboutAssets.txt b/templates/Xamarin.Forms/Android/Assets/AboutAssets.txt
deleted file mode 100644
index 8760f7c..0000000
--- a/templates/Xamarin.Forms/Android/Assets/AboutAssets.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-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/Xamarin.Forms/Android/MainActivity.fs b/templates/Xamarin.Forms/Android/MainActivity.fs
deleted file mode 100644
index 490bf6f..0000000
--- a/templates/Xamarin.Forms/Android/MainActivity.fs
+++ /dev/null
@@ -1,20 +0,0 @@
-namespace XFApp.Android
-
-open Android.App
-open Android.Content.PM
-open Android.Widget
-open Xamarin.Forms.Platform.Android
-
-open XFApp
-
-[]
-type MainActivity() =
- inherit FormsAppCompatActivity()
-
- override this.OnCreate(bundle) =
- Resource.UpdateIdValues()
-
- base.OnCreate(bundle)
-
- Xamarin.Forms.Forms.Init(this, bundle)
- this.LoadApplication(App())
\ No newline at end of file
diff --git a/templates/Xamarin.Forms/Android/Resources/AboutResources.txt b/templates/Xamarin.Forms/Android/Resources/AboutResources.txt
deleted file mode 100644
index 88b21f3..0000000
--- a/templates/Xamarin.Forms/Android/Resources/AboutResources.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-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/Xamarin.Forms/Android/Resources/mipmap-anydpi-v26/icon.xml b/templates/Xamarin.Forms/Android/Resources/mipmap-anydpi-v26/icon.xml
deleted file mode 100644
index eb2bd3c..0000000
--- a/templates/Xamarin.Forms/Android/Resources/mipmap-anydpi-v26/icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/templates/Xamarin.Forms/Android/Resources/mipmap-anydpi-v26/icon_round.xml b/templates/Xamarin.Forms/Android/Resources/mipmap-anydpi-v26/icon_round.xml
deleted file mode 100644
index eb2bd3c..0000000
--- a/templates/Xamarin.Forms/Android/Resources/mipmap-anydpi-v26/icon_round.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/templates/Xamarin.Forms/Android/Resources/mipmap-hdpi/icon.png b/templates/Xamarin.Forms/Android/Resources/mipmap-hdpi/icon.png
deleted file mode 100644
index 4623ca2..0000000
Binary files a/templates/Xamarin.Forms/Android/Resources/mipmap-hdpi/icon.png and /dev/null differ
diff --git a/templates/Xamarin.Forms/Android/Resources/mipmap-hdpi/launcher_foreground.png b/templates/Xamarin.Forms/Android/Resources/mipmap-hdpi/launcher_foreground.png
deleted file mode 100644
index a89e5bb..0000000
Binary files a/templates/Xamarin.Forms/Android/Resources/mipmap-hdpi/launcher_foreground.png and /dev/null differ
diff --git a/templates/Xamarin.Forms/Android/Resources/mipmap-mdpi/icon.png b/templates/Xamarin.Forms/Android/Resources/mipmap-mdpi/icon.png
deleted file mode 100644
index 9b1d25e..0000000
Binary files a/templates/Xamarin.Forms/Android/Resources/mipmap-mdpi/icon.png and /dev/null differ
diff --git a/templates/Xamarin.Forms/Android/Resources/mipmap-mdpi/launcher_foreground.png b/templates/Xamarin.Forms/Android/Resources/mipmap-mdpi/launcher_foreground.png
deleted file mode 100644
index 431a8a0..0000000
Binary files a/templates/Xamarin.Forms/Android/Resources/mipmap-mdpi/launcher_foreground.png and /dev/null differ
diff --git a/templates/Xamarin.Forms/Android/Resources/mipmap-xhdpi/icon.png b/templates/Xamarin.Forms/Android/Resources/mipmap-xhdpi/icon.png
deleted file mode 100644
index 844dfe5..0000000
Binary files a/templates/Xamarin.Forms/Android/Resources/mipmap-xhdpi/icon.png and /dev/null differ
diff --git a/templates/Xamarin.Forms/Android/Resources/mipmap-xhdpi/launcher_foreground.png b/templates/Xamarin.Forms/Android/Resources/mipmap-xhdpi/launcher_foreground.png
deleted file mode 100644
index 9e9e4f8..0000000
Binary files a/templates/Xamarin.Forms/Android/Resources/mipmap-xhdpi/launcher_foreground.png and /dev/null differ
diff --git a/templates/Xamarin.Forms/Android/Resources/mipmap-xxhdpi/icon.png b/templates/Xamarin.Forms/Android/Resources/mipmap-xxhdpi/icon.png
deleted file mode 100644
index e20ec9a..0000000
Binary files a/templates/Xamarin.Forms/Android/Resources/mipmap-xxhdpi/icon.png and /dev/null differ
diff --git a/templates/Xamarin.Forms/Android/Resources/mipmap-xxhdpi/launcher_foreground.png b/templates/Xamarin.Forms/Android/Resources/mipmap-xxhdpi/launcher_foreground.png
deleted file mode 100644
index 5f1e135..0000000
Binary files a/templates/Xamarin.Forms/Android/Resources/mipmap-xxhdpi/launcher_foreground.png and /dev/null differ
diff --git a/templates/Xamarin.Forms/Android/Resources/mipmap-xxxhdpi/icon.png b/templates/Xamarin.Forms/Android/Resources/mipmap-xxxhdpi/icon.png
deleted file mode 100644
index 8a08bf7..0000000
Binary files a/templates/Xamarin.Forms/Android/Resources/mipmap-xxxhdpi/icon.png and /dev/null differ
diff --git a/templates/Xamarin.Forms/Android/Resources/mipmap-xxxhdpi/launcher_foreground.png b/templates/Xamarin.Forms/Android/Resources/mipmap-xxxhdpi/launcher_foreground.png
deleted file mode 100644
index aca9f8d..0000000
Binary files a/templates/Xamarin.Forms/Android/Resources/mipmap-xxxhdpi/launcher_foreground.png and /dev/null differ
diff --git a/templates/Xamarin.Forms/Android/Resources/values/colors.xml b/templates/Xamarin.Forms/Android/Resources/values/colors.xml
deleted file mode 100644
index a858e62..0000000
--- a/templates/Xamarin.Forms/Android/Resources/values/colors.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
- #FFFFFF
- #3F51B5
- #303F9F
- #FF4081
-
-
diff --git a/templates/Xamarin.Forms/Android/Resources/values/styles.xml b/templates/Xamarin.Forms/Android/Resources/values/styles.xml
deleted file mode 100644
index a6cdf31..0000000
--- a/templates/Xamarin.Forms/Android/Resources/values/styles.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
diff --git a/templates/Xamarin.Forms/Android/XFApp.Android.fsproj b/templates/Xamarin.Forms/Android/XFApp.Android.fsproj
deleted file mode 100644
index b3b4a38..0000000
--- a/templates/Xamarin.Forms/Android/XFApp.Android.fsproj
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
- net6.0-android
- Exe
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/templates/Xamarin.Forms/XFApp/App.fs b/templates/Xamarin.Forms/XFApp/App.fs
deleted file mode 100644
index 4625140..0000000
--- a/templates/Xamarin.Forms/XFApp/App.fs
+++ /dev/null
@@ -1,15 +0,0 @@
-namespace XFApp
-
-open Xamarin.Forms
-
-type App() as this =
- inherit Application()
-
- do this.MainPage <-
- ContentPage(
- Content = Label(
- Text = "Hello from Xamarin.Forms, .NET 6.0 and F# 6.0!",
- VerticalOptions = LayoutOptions.Center,
- HorizontalOptions = LayoutOptions.Center
- )
- )
\ No newline at end of file
diff --git a/templates/Xamarin.Forms/XFApp/XFApp.fsproj b/templates/Xamarin.Forms/XFApp/XFApp.fsproj
deleted file mode 100644
index 4ffa251..0000000
--- a/templates/Xamarin.Forms/XFApp/XFApp.fsproj
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
- net6.0-ios;net6.0-android
- true
-
-
-
-
-
-
-
-
-
-
-
diff --git a/templates/Xamarin.Forms/iOS/AppDelegate.fs b/templates/Xamarin.Forms/iOS/AppDelegate.fs
deleted file mode 100644
index ae4c410..0000000
--- a/templates/Xamarin.Forms/iOS/AppDelegate.fs
+++ /dev/null
@@ -1,15 +0,0 @@
-namespace XFApp.iOS
-
-open UIKit
-open Foundation
-open Xamarin.Forms.Platform.iOS
-open XFApp
-
-[]
-type AppDelegate() =
- inherit FormsApplicationDelegate()
-
- override this.FinishedLaunching(app, options) =
- Xamarin.Forms.Forms.Init()
- this.LoadApplication(App())
- base.FinishedLaunching(app, options)
diff --git a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json b/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json
deleted file mode 100644
index c6e0233..0000000
--- a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json
+++ /dev/null
@@ -1,249 +0,0 @@
-{
- "images": [
- {
- "filename": "icon_20pt@2x.png",
- "size": "20x20",
- "scale": "2x",
- "idiom": "iphone"
- },
- {
- "filename": "icon_20pt@3x.png",
- "size": "20x20",
- "scale": "3x",
- "idiom": "iphone"
- },
- {
- "filename": "icon_29pt@2x.png",
- "size": "29x29",
- "scale": "2x",
- "idiom": "iphone"
- },
- {
- "filename": "icon_29pt@3x.png",
- "size": "29x29",
- "scale": "3x",
- "idiom": "iphone"
- },
- {
- "filename": "icon_40pt@2x.png",
- "size": "40x40",
- "scale": "2x",
- "idiom": "iphone"
- },
- {
- "filename": "icon_40pt@3x.png",
- "size": "40x40",
- "scale": "3x",
- "idiom": "iphone"
- },
- {
- "filename": "icon_60pt@2x.png",
- "size": "60x60",
- "scale": "2x",
- "idiom": "iphone"
- },
- {
- "filename": "icon_60pt@3x.png",
- "size": "60x60",
- "scale": "3x",
- "idiom": "iphone"
- },
- {
- "filename": "icon_20pt.png",
- "size": "20x20",
- "scale": "1x",
- "idiom": "ipad"
- },
- {
- "filename": "icon_20pt@2x-1.png",
- "size": "20x20",
- "scale": "2x",
- "idiom": "ipad"
- },
- {
- "filename": "icon_29pt.png",
- "size": "29x29",
- "scale": "1x",
- "idiom": "ipad"
- },
- {
- "filename": "icon_29pt@2x-1.png",
- "size": "29x29",
- "scale": "2x",
- "idiom": "ipad"
- },
- {
- "filename": "icon_40pt.png",
- "size": "40x40",
- "scale": "1x",
- "idiom": "ipad"
- },
- {
- "filename": "icon_40pt@2x-1.png",
- "size": "40x40",
- "scale": "2x",
- "idiom": "ipad"
- },
- {
- "filename": "icon_83.5@2x.png",
- "size": "83.5x83.5",
- "scale": "2x",
- "idiom": "ipad"
- },
- {
- "filename": "icon_76pt.png",
- "size": "76x76",
- "scale": "1x",
- "idiom": "ipad"
- },
- {
- "filename": "icon_76pt@2x.png",
- "size": "76x76",
- "scale": "2x",
- "idiom": "ipad"
- },
- {
- "filename": "Icon.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/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/Icon.png b/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/Icon.png
deleted file mode 100644
index 7fa3c6c..0000000
Binary files a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/Icon.png and /dev/null differ
diff --git a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_20pt.png b/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_20pt.png
deleted file mode 100644
index 5ef51c7..0000000
Binary files a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_20pt.png and /dev/null differ
diff --git a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_20pt@2x-1.png b/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_20pt@2x-1.png
deleted file mode 100644
index 0c3be77..0000000
Binary files a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_20pt@2x-1.png and /dev/null differ
diff --git a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_20pt@2x.png b/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_20pt@2x.png
deleted file mode 100644
index 0c3be77..0000000
Binary files a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_20pt@2x.png and /dev/null differ
diff --git a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_20pt@3x.png b/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_20pt@3x.png
deleted file mode 100644
index e50e9f8..0000000
Binary files a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_20pt@3x.png and /dev/null differ
diff --git a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_29pt.png b/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_29pt.png
deleted file mode 100644
index ce18897..0000000
Binary files a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_29pt.png and /dev/null differ
diff --git a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_29pt@2x-1.png b/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_29pt@2x-1.png
deleted file mode 100644
index 17cdb15..0000000
Binary files a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_29pt@2x-1.png and /dev/null differ
diff --git a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_29pt@2x.png b/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_29pt@2x.png
deleted file mode 100644
index 17cdb15..0000000
Binary files a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_29pt@2x.png and /dev/null differ
diff --git a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_29pt@3x.png b/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_29pt@3x.png
deleted file mode 100644
index 2922e88..0000000
Binary files a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_29pt@3x.png and /dev/null differ
diff --git a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_40pt.png b/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_40pt.png
deleted file mode 100644
index 0c3be77..0000000
Binary files a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_40pt.png and /dev/null differ
diff --git a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_40pt@2x-1.png b/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_40pt@2x-1.png
deleted file mode 100644
index 79a9ec6..0000000
Binary files a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_40pt@2x-1.png and /dev/null differ
diff --git a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_40pt@2x.png b/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_40pt@2x.png
deleted file mode 100644
index 79a9ec6..0000000
Binary files a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_40pt@2x.png and /dev/null differ
diff --git a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_40pt@3x.png b/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_40pt@3x.png
deleted file mode 100644
index a23c870..0000000
Binary files a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_40pt@3x.png and /dev/null differ
diff --git a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_60pt@2x.png b/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_60pt@2x.png
deleted file mode 100644
index a23c870..0000000
Binary files a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_60pt@2x.png and /dev/null differ
diff --git a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_60pt@3x.png b/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_60pt@3x.png
deleted file mode 100644
index 8189c8e..0000000
Binary files a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_60pt@3x.png and /dev/null differ
diff --git a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_76pt.png b/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_76pt.png
deleted file mode 100644
index ab43fbe..0000000
Binary files a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_76pt.png and /dev/null differ
diff --git a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_76pt@2x.png b/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_76pt@2x.png
deleted file mode 100644
index 95357bc..0000000
Binary files a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_76pt@2x.png and /dev/null differ
diff --git a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_83.5@2x.png b/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_83.5@2x.png
deleted file mode 100644
index 493c0b6..0000000
Binary files a/templates/Xamarin.Forms/iOS/Assets.xcassets/AppIcon.appiconset/icon_83.5@2x.png and /dev/null differ
diff --git a/templates/Xamarin.Forms/iOS/Assets.xcassets/Contents.json b/templates/Xamarin.Forms/iOS/Assets.xcassets/Contents.json
deleted file mode 100644
index da4a164..0000000
--- a/templates/Xamarin.Forms/iOS/Assets.xcassets/Contents.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
\ No newline at end of file
diff --git a/templates/Xamarin.Forms/iOS/Entitlements.plist b/templates/Xamarin.Forms/iOS/Entitlements.plist
deleted file mode 100644
index 36a8706..0000000
--- a/templates/Xamarin.Forms/iOS/Entitlements.plist
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/templates/Xamarin.Forms/iOS/Info.plist b/templates/Xamarin.Forms/iOS/Info.plist
deleted file mode 100644
index 64bab1c..0000000
--- a/templates/Xamarin.Forms/iOS/Info.plist
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
- CFBundleDisplayName
- XFApp
- CFBundleIdentifier
- com.mycompany.XFApp
- CFBundleShortVersionString
- 1.0
- CFBundleVersion
- 1
- LSRequiresIPhoneOS
-
- UIDeviceFamily
-
- 1
- 2
-
- UILaunchStoryboardName
- LaunchScreen
- UIRequiredDeviceCapabilities
-
- armv7
-
- UISupportedInterfaceOrientations
-
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
-
- UISupportedInterfaceOrientations~ipad
-
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationPortraitUpsideDown
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
-
- XSAppIconAssets
- Assets.xcassets/AppIcon.appiconset
-
-
diff --git a/templates/Xamarin.Forms/iOS/LaunchScreen.storyboard b/templates/Xamarin.Forms/iOS/LaunchScreen.storyboard
deleted file mode 100644
index 2296c6b..0000000
--- a/templates/Xamarin.Forms/iOS/LaunchScreen.storyboard
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/templates/Xamarin.Forms/iOS/Main.fs b/templates/Xamarin.Forms/iOS/Main.fs
deleted file mode 100644
index 4fb9cac..0000000
--- a/templates/Xamarin.Forms/iOS/Main.fs
+++ /dev/null
@@ -1,9 +0,0 @@
-namespace XFApp.iOS
-
-open UIKit
-
-module Main =
- []
- let main args =
- UIApplication.Main(args, null, typeof)
- 0
diff --git a/templates/Xamarin.Forms/iOS/SceneDelegate.fs b/templates/Xamarin.Forms/iOS/SceneDelegate.fs
deleted file mode 100644
index 386c72d..0000000
--- a/templates/Xamarin.Forms/iOS/SceneDelegate.fs
+++ /dev/null
@@ -1,52 +0,0 @@
-namespace XFApp.iOS
-
- open UIKit
- open Foundation
-
- []
- type SceneDelegate() =
- inherit UIResponder()
-
- []
- member val Window : UIWindow = null with get, set
-
- []
- member _.WillConnect(scene: UIScene, session: UISceneSession, connectionOptions: UISceneConnectionOptions) =
- // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
- // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
- // This delegate does not imply the connecting scene or session are new (see UIApplicationDelegate `GetConfiguration` instead).
- ()
-
-
- []
- member _.DidDisconnect(scene: UIScene) =
- // Called as the scene is being released by the system.
- // This occurs shortly after the scene enters the background, or when its session is discarded.
- // Release any resources associated with this scene that can be re-created the next time the scene connects.
- // The scene may re-connect later, as its session was not necessarily discarded (see UIApplicationDelegate `DidDiscardSceneSessions` instead).
- ()
-
- []
- member _.DidBecomeActive(scene: UIScene) =
- // Called when the scene has moved from an inactive state to an active state.
- // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
- ()
-
- []
- member _.WillResignActive(scene: UIScene) =
- // Called when the scene will move from an active state to an inactive state.
- // This may occur due to temporary interruptions (ex. an incoming phone call).
- ()
-
- []
- member _.WillEnterForeground(scene: UIScene) =
- // Called as the scene transitions from the background to the foreground.
- // Use this method to undo the changes made on entering the background.
- ()
-
- []
- member _.DidEnterBackground(scene: UIScene) =
- // Called as the scene transitions from the foreground to the background.
- // Use this method to save data, release shared resources, and store enough scene-specific state information
- // to restore the scene back to its current state.
- ()
\ No newline at end of file
diff --git a/templates/Xamarin.Forms/iOS/XFApp.iOS.fsproj b/templates/Xamarin.Forms/iOS/XFApp.iOS.fsproj
deleted file mode 100644
index 02e6e3d..0000000
--- a/templates/Xamarin.Forms/iOS/XFApp.iOS.fsproj
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
- net6.0-ios
- Exe
- 15.0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/templates/Xamarin.Forms/nuget.config b/templates/Xamarin.Forms/nuget.config
deleted file mode 100644
index a634662..0000000
--- a/templates/Xamarin.Forms/nuget.config
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/templates/iOS/App.iOS.fsproj b/templates/iOS/App.iOS.fsproj
index e373b26..b81a5a1 100644
--- a/templates/iOS/App.iOS.fsproj
+++ b/templates/iOS/App.iOS.fsproj
@@ -1,8 +1,9 @@
- net7.0-ios
+ net8.0-ios
Exe
15.0
+ true
@@ -31,4 +32,7 @@
+
+
+
diff --git a/templates/iOS/SceneDelegate.fs b/templates/iOS/SceneDelegate.fs
index 51dfd92..7ee9e05 100644
--- a/templates/iOS/SceneDelegate.fs
+++ b/templates/iOS/SceneDelegate.fs
@@ -27,7 +27,7 @@ type SceneDelegate() =
let vc = new UIViewController()
label.TextAlignment <- UITextAlignment.Center
label.TranslatesAutoresizingMaskIntoConstraints <- false
- label.Text <- "Hello, .NET 7 and F# 7!"
+ label.Text <- "Hello, .NET 8 and F# 8!"
vc.View.AddSubview(label)
NSLayoutConstraint.ActivateConstraints(