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(