diff --git a/build/test-scripts/run-net7-template-linux.ps1 b/build/test-scripts/run-net7-template-linux.ps1 index a10c9ece3764..4702cf88c935 100644 --- a/build/test-scripts/run-net7-template-linux.ps1 +++ b/build/test-scripts/run-net7-template-linux.ps1 @@ -81,7 +81,10 @@ $projects = @(3, "5.3/uno53net9blank/uno53net9blank/uno53net9blank.csproj", @(), @()), # 5.3 lib - @(3, "5.3/uno53net9Lib/uno53net9Lib.csproj", @(), @()) + @(3, "5.3/uno53net9Lib/uno53net9Lib.csproj", @(), @()), + + # 5.3 Uno App with Library reference + @(3, "5.3/uno53AppWithLib/uno53AppWithLib/uno53AppWithLib.csproj", @(), @()), # 5.3 blank publish testing # Disabled for LXD setup issues @@ -91,10 +94,19 @@ $projects = ## ## When adding new template versions, create them in a separate version named folder ## using all the specific features that can be impacted by the use of the Uno.SDK + + # Empty marker to allow new tests lines to end with a comma + @() ); for($i = 0; $i -lt $projects.Length; $i++) { + # Skip the end marker to help for new tests authoring + if ($projects[$i].Length -eq 0) + { + continue + } + $projectTestGroup=$projects[$i][0]; $projectPath=$projects[$i][1]; $projectParameters=$projects[$i][2]; diff --git a/build/test-scripts/run-netcore-mobile-template-tests.ps1 b/build/test-scripts/run-netcore-mobile-template-tests.ps1 index 0037cdfd1509..4355fa841406 100644 --- a/build/test-scripts/run-netcore-mobile-template-tests.ps1 +++ b/build/test-scripts/run-netcore-mobile-template-tests.ps1 @@ -350,14 +350,31 @@ $projects = # Ensure that build can happen even if a RID is specified @(4, "5.3/uno53net9blank/uno53net9blank/uno53net9blank.csproj", @("-f", "net9.0-android", "-r", "android-arm64"), @("macOS", "NetCore")) + # Ensure that build can happen even if a RID is specified + @(4, "5.3/uno53AppWithLib/uno53AppWithLib/uno53AppWithLib.csproj", @("-f", "net9.0"), @("macOS", "NetCore")), + @(4, "5.3/uno53AppWithLib/uno53AppWithLib/uno53AppWithLib.csproj", @("-f", "net9.0-browserwasm"), @("macOS", "NetCore")), + @(4, "5.3/uno53AppWithLib/uno53AppWithLib/uno53AppWithLib.csproj", @("-f", "net9.0-ios"), @("macOS", "NetCore")), + @(4, "5.3/uno53AppWithLib/uno53AppWithLib/uno53AppWithLib.csproj", @("-f", "net9.0-android"), @("macOS", "NetCore")), + @(4, "5.3/uno53AppWithLib/uno53AppWithLib/uno53AppWithLib.csproj", @("-f", "net9.0-maccatalyst"), @("macOS", "NetCore")), + @(4, "5.3/uno53AppWithLib/uno53AppWithLib/uno53AppWithLib.csproj", @("-f", "net9.0-desktop"), @("macOS", "NetCore")), + ## Note for contributors ## ## When adding new template versions, create them in a separate version named folder ## using all the specific features that can be impacted by the use of the Uno.SDK + + # Empty marker to allow new tests lines to end with a comma + @() ); for($i = 0; $i -lt $projects.Length; $i++) { + # Skip the end marker to help for new tests authoring + if ($projects[$i].Length -eq 0) + { + continue + } + $projectTestGroup=$projects[$i][0]; $projectPath=$projects[$i][1]; $projectOptions=$projects[$i][2]; diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/.editorconfig b/src/SolutionTemplate/5.3/uno53AppWithLib/.editorconfig new file mode 100644 index 000000000000..b947be645f35 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/.editorconfig @@ -0,0 +1,167 @@ +; This file is for unifying the coding style for different editors and IDEs. +; More information at http://editorconfig.org + +# This file is the top-most EditorConfig file +root = true + +########################################## +# Common Settings +########################################## + +[*] +indent_style = space +end_of_line = crlf +trim_trailing_whitespace = true +insert_final_newline = true +charset = utf-8 + +########################################## +# File Extension Settings +########################################## + +[*.{yml,yaml}] +indent_size = 2 + +[.vsconfig] +indent_size = 2 +end_of_line = lf + +[*.sln] +indent_style = tab +indent_size = 2 + +[*.{csproj,proj,projitems,shproj}] +indent_size = 2 + +[*.{json,slnf}] +indent_size = 2 +end_of_line = lf + +[*.{props,targets}] +indent_size = 2 + +[*.xaml] +indent_size = 2 +charset = utf-8-bom + +[*.xml] +indent_size = 2 +end_of_line = lf + +[*.plist] +indent_size = 2 +indent_style = tab +end_of_line = lf + +[*.manifest] +indent_size = 2 + +[*.appxmanifest] +indent_size = 2 + +[*.{json,css,webmanifest}] +indent_size = 2 +end_of_line = lf + +[web.config] +indent_size = 2 +end_of_line = lf + +[*.sh] +indent_size = 2 +end_of_line = lf + +[*.cs] +# EOL should be normalized by Git. See https://github.com/dotnet/format/issues/1099 +end_of_line = unset + +# See https://github.com/dotnet/roslyn/issues/20356#issuecomment-310143926 +trim_trailing_whitespace = false + +tab_width = 4 +indent_size = 4 + +# Sort using and Import directives with System.* appearing first +dotnet_sort_system_directives_first = true + +# Avoid "this." and "Me." if not necessary +dotnet_style_qualification_for_field = false:suggestion +dotnet_style_qualification_for_property = false:suggestion +dotnet_style_qualification_for_method = false:suggestion +dotnet_style_qualification_for_event = false:suggestion + +#### Naming styles #### + +# Naming rules + +dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion +dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface +dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i + +dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.types_should_be_pascal_case.symbols = types +dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case + +dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members +dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case + +# Symbol specifications + +dotnet_naming_symbols.interface.applicable_kinds = interface +dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.interface.required_modifiers = + +dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum +dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.types.required_modifiers = + +dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method +dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.non_field_members.required_modifiers = + +# Naming styles + +dotnet_naming_style.begins_with_i.required_prefix = I +dotnet_naming_style.begins_with_i.required_suffix = +dotnet_naming_style.begins_with_i.word_separator = +dotnet_naming_style.begins_with_i.capitalization = pascal_case + +dotnet_naming_style.pascal_case.required_prefix = +dotnet_naming_style.pascal_case.required_suffix = +dotnet_naming_style.pascal_case.word_separator = +dotnet_naming_style.pascal_case.capitalization = pascal_case + +dotnet_naming_style.pascal_case.required_prefix = +dotnet_naming_style.pascal_case.required_suffix = +dotnet_naming_style.pascal_case.word_separator = +dotnet_naming_style.pascal_case.capitalization = pascal_case +dotnet_style_operator_placement_when_wrapping = beginning_of_line +dotnet_style_coalesce_expression = true:suggestion +dotnet_style_null_propagation = true:suggestion +dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion +dotnet_style_prefer_auto_properties = true:silent +dotnet_style_object_initializer = true:suggestion +dotnet_style_collection_initializer = true:suggestion +dotnet_style_prefer_simplified_boolean_expressions = true:suggestion +dotnet_style_prefer_conditional_expression_over_assignment = true:silent +dotnet_style_prefer_conditional_expression_over_return = true:silent +dotnet_style_explicit_tuple_names = true:suggestion +dotnet_style_prefer_inferred_tuple_names = true:suggestion + +csharp_indent_labels = one_less_than_current +csharp_using_directive_placement = outside_namespace:silent +csharp_prefer_simple_using_statement = true:suggestion +csharp_prefer_braces = true:silent +csharp_style_namespace_declarations = file_scoped:warning +csharp_style_prefer_method_group_conversion = true:silent +csharp_style_prefer_top_level_statements = true:silent +csharp_style_prefer_primary_constructors = true:suggestion +csharp_style_expression_bodied_methods = false:silent +csharp_style_expression_bodied_constructors = false:silent +csharp_style_expression_bodied_operators = false:silent +csharp_style_expression_bodied_properties = true:silent +csharp_style_expression_bodied_indexers = true:silent +csharp_style_expression_bodied_accessors = true:silent +csharp_style_expression_bodied_lambdas = true:silent +csharp_style_expression_bodied_local_functions = false:silent diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/.gitignore b/src/SolutionTemplate/5.3/uno53AppWithLib/.gitignore new file mode 100644 index 000000000000..ef88c2053b9a --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/.gitignore @@ -0,0 +1,403 @@ +## 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/main/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/ + +# 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 +*.tlog +*.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 6 auto-generated project file (contains which files were open etc.) +*.vbp + +# Visual Studio 6 workspace and project file (working project files containing files to include in project) +*.dsw +*.dsp + +# Visual Studio 6 technical files +*.ncb +*.aps + +# 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/ + +# Visual Studio History (VSHistory) files +.vshistory/ + +# 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 + +# VS Code files for those working on multiple tools +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +*.code-workspace + +# Local History for Visual Studio Code +.history/ + +# Windows Installer files from build outputs +*.cab +*.msi +*.msix +*.msm +*.msp + +# JetBrains Rider +*.sln.iml + +# Single Target Config +solution-config.props +# Publish Profiles +!**/Properties/PublishProfiles/*.pubxml \ No newline at end of file diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/.vsconfig b/src/SolutionTemplate/5.3/uno53AppWithLib/.vsconfig new file mode 100644 index 000000000000..7c56eecf79a6 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/.vsconfig @@ -0,0 +1,38 @@ +{ + "version": "1.0", + "components": [ + "Microsoft.VisualStudio.Component.CoreEditor", + "Microsoft.VisualStudio.Workload.CoreEditor", + "Microsoft.NetCore.Component.SDK", + "Microsoft.NetCore.Component.DevelopmentTools", + "Microsoft.Net.ComponentGroup.DevelopmentPrerequisites", + "Microsoft.VisualStudio.Component.TextTemplating", + "Microsoft.VisualStudio.ComponentGroup.WebToolsExtensions", + "Microsoft.NetCore.Component.Web", + "Microsoft.VisualStudio.Component.IISExpress", + "Component.Microsoft.Web.LibraryManager", + "Microsoft.VisualStudio.ComponentGroup.Web", + "Microsoft.VisualStudio.Component.Web", + "Microsoft.VisualStudio.ComponentGroup.Web.Client", + "Microsoft.VisualStudio.Workload.NetWeb", + "Microsoft.VisualStudio.ComponentGroup.Azure.Prerequisites", + "Microsoft.VisualStudio.Workload.Azure", + "Microsoft.VisualStudio.ComponentGroup.WebToolsExtensions.TemplateEngine", + "Microsoft.VisualStudio.Component.Windows10SDK.19041", + "Microsoft.VisualStudio.ComponentGroup.MSIX.Packaging", + "Microsoft.VisualStudio.Component.ManagedDesktop.Prerequisites", + "Microsoft.VisualStudio.Component.Debugger.JustInTime", + "Microsoft.VisualStudio.Workload.ManagedDesktop", + "Microsoft.Component.NetFX.Native", + "Microsoft.VisualStudio.Component.Graphics", + "Microsoft.VisualStudio.Component.Merq", + "Component.Xamarin.RemotedSimulator", + "Microsoft.VisualStudio.Component.MonoDebugger", + "Microsoft.VisualStudio.ComponentGroup.Maui.All", + "Component.Android.SDK34", + "Component.Android.SDK33", + "Component.OpenJDK", + "Microsoft.VisualStudio.Workload.NetCrossPlat", + "Microsoft.VisualStudio.Workload.NetCoreTools" + ] +} diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/Directory.Build.props b/src/SolutionTemplate/5.3/uno53AppWithLib/Directory.Build.props new file mode 100644 index 000000000000..cd9c4e6f22d5 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/Directory.Build.props @@ -0,0 +1,26 @@ + + + + + enable + enable + true + + true + + + $(NoWarn);NU1507;NETSDK1201;PRI257 + + + + 4.1.0-dev.72 + 5.2.0-dev.44 + 4.2.0-dev.19 + 5.2.0-dev.58 + + diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/Directory.Build.targets b/src/SolutionTemplate/5.3/uno53AppWithLib/Directory.Build.targets new file mode 100644 index 000000000000..b207aa11fdb9 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/Directory.Build.targets @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/Directory.Packages.props b/src/SolutionTemplate/5.3/uno53AppWithLib/Directory.Packages.props new file mode 100644 index 000000000000..5cfc10f22cdc --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/Directory.Packages.props @@ -0,0 +1,10 @@ + + + + + diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/global.json b/src/SolutionTemplate/5.3/uno53AppWithLib/global.json new file mode 100644 index 000000000000..874a8cfb4e57 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/global.json @@ -0,0 +1,9 @@ +{ + "sdk": { + "allowPrerelease": true + }, + // To update the version of Uno please update the version of the Uno.Sdk here. See https://aka.platform.uno/upgrade-uno-packages for more information. + "msbuild-sdks": { + "Uno.Sdk.Private": "5.2.0-dev.2002" + } +} diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/nuget.config b/src/SolutionTemplate/5.3/uno53AppWithLib/nuget.config new file mode 100644 index 000000000000..3242ec407710 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/nuget.config @@ -0,0 +1,12 @@ + + + + + + + diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib.sln b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib.sln new file mode 100644 index 000000000000..465ebe9fa504 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib.sln @@ -0,0 +1,87 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.2.32210.308 +MinimumVisualStudioVersion = 15.0.26124.0 + +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "uno53AppWithLib", "uno53AppWithLib\uno53AppWithLib.csproj", "{49D5D86D-E59B-4426-9312-2C7A624758DD}" +EndProject + +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{BADA71DC-7FFD-4EDC-9F28-FB74AEADC713}" + ProjectSection(SolutionItems) = preProject + .gitignore = .gitignore + Directory.Build.props = Directory.Build.props + Directory.Build.targets = Directory.Build.targets + global.json = global.json + Directory.Packages.props = Directory.Packages.props + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|ARM = Debug|ARM + Debug|ARM64 = Debug|ARM64 + Debug|iPhone = Debug|iPhone + Debug|iPhoneSimulator = Debug|iPhoneSimulator + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|ARM = Release|ARM + Release|ARM64 = Release|ARM64 + Release|iPhone = Release|iPhone + Release|iPhoneSimulator = Release|iPhoneSimulator + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Debug|ARM.ActiveCfg = Debug|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Debug|ARM.Build.0 = Debug|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Debug|ARM.Deploy.0 = Debug|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Debug|ARM64.Build.0 = Debug|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Debug|ARM64.Deploy.0 = Debug|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Debug|iPhone.Build.0 = Debug|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Debug|iPhone.Deploy.0 = Debug|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Debug|x64.ActiveCfg = Debug|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Debug|x64.Build.0 = Debug|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Debug|x64.Deploy.0 = Debug|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Debug|x86.ActiveCfg = Debug|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Debug|x86.Build.0 = Debug|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Debug|x86.Deploy.0 = Debug|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Release|Any CPU.Build.0 = Release|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Release|Any CPU.Deploy.0 = Release|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Release|ARM.ActiveCfg = Release|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Release|ARM.Build.0 = Release|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Release|ARM.Deploy.0 = Release|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Release|ARM64.ActiveCfg = Release|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Release|ARM64.Build.0 = Release|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Release|ARM64.Deploy.0 = Release|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Release|iPhone.ActiveCfg = Release|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Release|iPhone.Build.0 = Release|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Release|iPhone.Deploy.0 = Release|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Release|x64.ActiveCfg = Release|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Release|x64.Build.0 = Release|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Release|x64.Deploy.0 = Release|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Release|x86.ActiveCfg = Release|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Release|x86.Build.0 = Release|Any CPU + {49D5D86D-E59B-4426-9312-2C7A624758DD}.Release|x86.Deploy.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {D53CAEFA-9726-46B1-87E3-1416F02E4E64} + EndGlobalSection +EndGlobal diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/App.xaml b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/App.xaml new file mode 100644 index 000000000000..bf826fd4ccaa --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/App.xaml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/App.xaml.cs b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/App.xaml.cs new file mode 100644 index 000000000000..16082eba99f3 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/App.xaml.cs @@ -0,0 +1,132 @@ +using System; +using Microsoft.Extensions.Logging; +using Uno.Resizetizer; + +namespace uno53AppWithLib; + +public partial class App : Application +{ + /// + /// Initializes the singleton application object. This is the first line of authored code + /// executed, and as such is the logical equivalent of main() or WinMain(). + /// + public App() + { + this.InitializeComponent(); + } + + protected Window? MainWindow { get; private set; } + + protected override void OnLaunched(LaunchActivatedEventArgs args) + { + MainWindow = new Window(); +#if DEBUG +#pragma warning disable UNO0008 + MainWindow.EnableHotReload(); +#pragma warning restore UNO0008 +#endif + + + // Do not repeat app initialization when the Window already has content, + // just ensure that the window is active + if (MainWindow.Content is not Frame rootFrame) + { + // Create a Frame to act as the navigation context and navigate to the first page + rootFrame = new Frame(); + + // Place the frame in the current Window + MainWindow.Content = rootFrame; + + rootFrame.NavigationFailed += OnNavigationFailed; + } + + if (rootFrame.Content == null) + { + // When the navigation stack isn't restored navigate to the first page, + // configuring the new page by passing required information as a navigation + // parameter + rootFrame.Navigate(typeof(MainPage), args.Arguments); + } + + MainWindow.SetWindowIcon(); + // Ensure the current window is active + MainWindow.Activate(); + } + + /// + /// Invoked when Navigation to a certain page fails + /// + /// The Frame which failed navigation + /// Details about the navigation failure + void OnNavigationFailed(object sender, NavigationFailedEventArgs e) + { + throw new InvalidOperationException($"Failed to load {e.SourcePageType.FullName}: {e.Exception}"); + } + + /// + /// Configures global Uno Platform logging + /// + public static void InitializeLogging() + { +#if DEBUG + // Logging is disabled by default for release builds, as it incurs a significant + // initialization cost from Microsoft.Extensions.Logging setup. If startup performance + // is a concern for your application, keep this disabled. If you're running on the web or + // desktop targets, you can use URL or command line parameters to enable it. + // + // For more performance documentation: https://platform.uno/docs/articles/Uno-UI-Performance.html + + var factory = LoggerFactory.Create(builder => + { +#if __WASM__ + builder.AddProvider(new global::Uno.Extensions.Logging.WebAssembly.WebAssemblyConsoleLoggerProvider()); +#elif __IOS__ || __MACCATALYST__ + builder.AddProvider(new global::Uno.Extensions.Logging.OSLogLoggerProvider()); +#else + builder.AddConsole(); +#endif + + // Exclude logs below this level + builder.SetMinimumLevel(LogLevel.Information); + + // Default filters for Uno Platform namespaces + builder.AddFilter("Uno", LogLevel.Warning); + builder.AddFilter("Windows", LogLevel.Warning); + builder.AddFilter("Microsoft", LogLevel.Warning); + + // Generic Xaml events + // builder.AddFilter("Microsoft.UI.Xaml", LogLevel.Debug ); + // builder.AddFilter("Microsoft.UI.Xaml.VisualStateGroup", LogLevel.Debug ); + // builder.AddFilter("Microsoft.UI.Xaml.StateTriggerBase", LogLevel.Debug ); + // builder.AddFilter("Microsoft.UI.Xaml.UIElement", LogLevel.Debug ); + // builder.AddFilter("Microsoft.UI.Xaml.FrameworkElement", LogLevel.Trace ); + + // Layouter specific messages + // builder.AddFilter("Microsoft.UI.Xaml.Controls", LogLevel.Debug ); + // builder.AddFilter("Microsoft.UI.Xaml.Controls.Layouter", LogLevel.Debug ); + // builder.AddFilter("Microsoft.UI.Xaml.Controls.Panel", LogLevel.Debug ); + + // builder.AddFilter("Windows.Storage", LogLevel.Debug ); + + // Binding related messages + // builder.AddFilter("Microsoft.UI.Xaml.Data", LogLevel.Debug ); + // builder.AddFilter("Microsoft.UI.Xaml.Data", LogLevel.Debug ); + + // Binder memory references tracking + // builder.AddFilter("Uno.UI.DataBinding.BinderReferenceHolder", LogLevel.Debug ); + + // DevServer and HotReload related + // builder.AddFilter("Uno.UI.RemoteControl", LogLevel.Information); + + // Debug JS interop + // builder.AddFilter("Uno.Foundation.WebAssemblyRuntime", LogLevel.Debug ); + }); + + global::Uno.Extensions.LogExtensionPoint.AmbientLoggerFactory = factory; + +#if HAS_UNO + global::Uno.UI.Adapter.Microsoft.Extensions.Logging.LoggingAdapter.Initialize(); +#endif +#endif + } +} diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Assets/Icons/icon.svg b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Assets/Icons/icon.svg new file mode 100644 index 000000000000..a15af53aab30 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Assets/Icons/icon.svg @@ -0,0 +1,42 @@ + + + + + + diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Assets/Icons/icon_foreground.svg b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Assets/Icons/icon_foreground.svg new file mode 100644 index 000000000000..8ffc41ae3a5d --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Assets/Icons/icon_foreground.svg @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Assets/SharedAssets.md b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Assets/SharedAssets.md new file mode 100644 index 000000000000..1b84a74ab8a3 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Assets/SharedAssets.md @@ -0,0 +1,32 @@ +# Shared Assets + +See documentation about assets here: https://github.com/unoplatform/uno/blob/master/doc/articles/features/working-with-assets.md + +## Here is a cheat sheet + +1. Add the image file to the `Assets` directory of a shared project. +2. Set the build action to `Content`. +3. (Recommended) Provide an asset for various scales/dpi + +### Examples + +```text +\Assets\Images\logo.scale-100.png +\Assets\Images\logo.scale-200.png +\Assets\Images\logo.scale-400.png + +\Assets\Images\scale-100\logo.png +\Assets\Images\scale-200\logo.png +\Assets\Images\scale-400\logo.png +``` + +### Table of scales + +| Scale | WinUI | iOS/MacCatalyst | Android | +|-------|:-----------:|:---------------:|:-------:| +| `100` | scale-100 | @1x | mdpi | +| `125` | scale-125 | N/A | N/A | +| `150` | scale-150 | N/A | hdpi | +| `200` | scale-200 | @2x | xhdpi | +| `300` | scale-300 | @3x | xxhdpi | +| `400` | scale-400 | N/A | xxxhdpi | diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Assets/Splash/splash_screen.svg b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Assets/Splash/splash_screen.svg new file mode 100644 index 000000000000..8ffc41ae3a5d --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Assets/Splash/splash_screen.svg @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Assets/json_file_asset.json b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Assets/json_file_asset.json new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/GlobalUsings.cs b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/GlobalUsings.cs new file mode 100644 index 000000000000..eeafbe36fe38 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/GlobalUsings.cs @@ -0,0 +1,4 @@ +global using System.Collections.Immutable; +global using Microsoft.Extensions.DependencyInjection; +global using Microsoft.Extensions.Logging; +global using ApplicationExecutionState = Windows.ApplicationModel.Activation.ApplicationExecutionState; diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/MainPage.xaml b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/MainPage.xaml new file mode 100644 index 000000000000..5bfa85aa220e --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/MainPage.xaml @@ -0,0 +1,13 @@ + + + + + diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/MainPage.xaml.cs b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/MainPage.xaml.cs new file mode 100644 index 000000000000..a989d35248b1 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/MainPage.xaml.cs @@ -0,0 +1,11 @@ +namespace uno53AppWithLib; + +public sealed partial class MainPage : Page +{ + public MainPage() + { + this.InitializeComponent(); + + _ = new uno53lib.Class1(); + } +} diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Package.appxmanifest b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Package.appxmanifest new file mode 100644 index 000000000000..418b9ee0c1e8 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Package.appxmanifest @@ -0,0 +1,43 @@ + + + + + + + + uno53AppWithLib + uno53AppWithLib + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Android/AndroidManifest.xml b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Android/AndroidManifest.xml new file mode 100644 index 000000000000..95ae07533a05 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Android/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + + diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Android/Assets/AboutAssets.txt b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Android/Assets/AboutAssets.txt new file mode 100644 index 000000000000..210a93b8019c --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Android/Assets/AboutAssets.txt @@ -0,0 +1,22 @@ +To add cross-platform image assets for your Uno Platform app, use the Assets folder +in the shared project instead. Assets in this folder are Android-only assets. + +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 you 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/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Android/Main.Android.cs b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Android/Main.Android.cs new file mode 100644 index 000000000000..1af75b4bdd67 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Android/Main.Android.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Android.App; +using Android.Content; +using Android.OS; +using Android.Runtime; +using Android.Views; +using Android.Widget; +using Com.Nostra13.Universalimageloader.Core; +using Microsoft.UI.Xaml.Media; + +namespace uno53AppWithLib.Droid; + +[global::Android.App.ApplicationAttribute( + Label = "@string/ApplicationName", + Icon = "@mipmap/icon", + LargeHeap = true, + HardwareAccelerated = true, + Theme = "@style/AppTheme" +)] +public class Application : Microsoft.UI.Xaml.NativeApplication +{ + public Application(IntPtr javaReference, JniHandleOwnership transfer) + : base(() => new App(), javaReference, transfer) + { + ConfigureUniversalImageLoader(); + } + + private static void ConfigureUniversalImageLoader() + { + // Create global configuration and initialize ImageLoader with this config + ImageLoaderConfiguration config = new ImageLoaderConfiguration + .Builder(Context) + .Build(); + + ImageLoader.Instance.Init(config); + + ImageSource.DefaultImageLoader = ImageLoader.Instance.LoadImageAsync; + } +} + diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Android/MainActivity.Android.cs b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Android/MainActivity.Android.cs new file mode 100644 index 000000000000..fcafde8f388e --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Android/MainActivity.Android.cs @@ -0,0 +1,16 @@ +using Android.App; +using Android.Content.PM; +using Android.OS; +using Android.Views; +using Android.Widget; + +namespace uno53AppWithLib.Droid; + +[Activity( + MainLauncher = true, + ConfigurationChanges = global::Uno.UI.ActivityHelper.AllConfigChanges, + WindowSoftInputMode = SoftInput.AdjustNothing | SoftInput.StateHidden +)] +public class MainActivity : Microsoft.UI.Xaml.ApplicationActivity +{ +} diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Android/Resources/AboutResources.txt b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Android/Resources/AboutResources.txt new file mode 100644 index 000000000000..17e3b1333511 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Android/Resources/AboutResources.txt @@ -0,0 +1,47 @@ +To add cross-platform image assets for your Uno Platform app, use the Assets folder +in the shared project instead. Resources in this folder are Android-only. + +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.axml), +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/ + icon.png + + layout/ + main.axml + + 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 "R" +(this is an Android convention) that contains the tokens for each one of the resources +included. For example, for the above Resources layout, this is what the R class would expose: + +public class R { + 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 R.layout.main +to reference the layout/main.axml file, or R.strings.first_string to reference the first +string in the dictionary file values/strings.xml. diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Android/Resources/values/Strings.xml b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Android/Resources/values/Strings.xml new file mode 100644 index 000000000000..8fad3b6e212b --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Android/Resources/values/Strings.xml @@ -0,0 +1,5 @@ + + + Hello World, Click Me! + uno53AppWithLib + diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Android/Resources/values/Styles.xml b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Android/Resources/values/Styles.xml new file mode 100644 index 000000000000..c02bd06f7194 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Android/Resources/values/Styles.xml @@ -0,0 +1,22 @@ + + + + + + diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Android/environment.conf b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Android/environment.conf new file mode 100644 index 000000000000..fa6c2e32bfb6 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Android/environment.conf @@ -0,0 +1,2 @@ +# See this for more details: http://developer.xamarin.com/guides/android/advanced_topics/garbage_collection/ +MONO_GC_PARAMS=bridge-implementation=tarjan,nursery-size=32m,soft-heap-limit=256m \ No newline at end of file diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Desktop/Program.cs b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Desktop/Program.cs new file mode 100644 index 000000000000..3efb8036e88c --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Desktop/Program.cs @@ -0,0 +1,22 @@ +using Uno.UI.Runtime.Skia; + +namespace uno53AppWithLib; + +public class Program +{ + [STAThread] + public static void Main(string[] args) + { + App.InitializeLogging(); + + var host = SkiaHostBuilder.Create() + .App(() => new App()) + .UseX11() + .UseLinuxFrameBuffer() + .UseMacOS() + .UseWindows() + .Build(); + + host.Run(); + } +} diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/MacCatalyst/Entitlements.plist b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/MacCatalyst/Entitlements.plist new file mode 100644 index 000000000000..24c3103683fa --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/MacCatalyst/Entitlements.plist @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/MacCatalyst/Info.plist b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/MacCatalyst/Info.plist new file mode 100644 index 000000000000..1bb02ddcdc3e --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/MacCatalyst/Info.plist @@ -0,0 +1,26 @@ + + + + + UIDeviceFamily + + 2 + + LSApplicationCategoryType + public.app-category.utilities + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + XSAppIconAssets + Assets.xcassets/icon.appiconset + + + + diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/MacCatalyst/Main.maccatalyst.cs b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/MacCatalyst/Main.maccatalyst.cs new file mode 100644 index 000000000000..ef81035b6d89 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/MacCatalyst/Main.maccatalyst.cs @@ -0,0 +1,14 @@ +using UIKit; + +namespace uno53AppWithLib.MacCatalyst; + +public class EntryPoint +{ + // This is the main entry point of the application. + public static void Main(string[] args) + { + // if you want to use a different Application Delegate class from "AppDelegate" + // you can specify it here. + UIApplication.Main(args, null, typeof(App)); + } +} diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/MacCatalyst/Media.xcassets/LaunchImages.launchimage/Contents.json b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/MacCatalyst/Media.xcassets/LaunchImages.launchimage/Contents.json new file mode 100644 index 000000000000..69555e44061e --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/MacCatalyst/Media.xcassets/LaunchImages.launchimage/Contents.json @@ -0,0 +1,58 @@ +{ + "images": [ + { + "orientation": "portrait", + "extent": "full-screen", + "minimum-system-version": "7.0", + "scale": "2x", + "size": "640x960", + "idiom": "iphone" + }, + { + "orientation": "portrait", + "extent": "full-screen", + "minimum-system-version": "7.0", + "subtype": "retina4", + "scale": "2x", + "size": "640x1136", + "idiom": "iphone" + }, + { + "orientation": "portrait", + "extent": "full-screen", + "minimum-system-version": "7.0", + "scale": "1x", + "size": "768x1024", + "idiom": "ipad" + }, + { + "orientation": "landscape", + "extent": "full-screen", + "minimum-system-version": "7.0", + "scale": "1x", + "size": "1024x768", + "idiom": "ipad" + }, + { + "orientation": "portrait", + "extent": "full-screen", + "minimum-system-version": "7.0", + "scale": "2x", + "size": "1536x2048", + "idiom": "ipad" + }, + { + "orientation": "landscape", + "extent": "full-screen", + "minimum-system-version": "7.0", + "scale": "2x", + "size": "2048x1536", + "idiom": "ipad" + } + ], + "properties": {}, + "info": { + "version": 1, + "author": "" + } +} \ No newline at end of file diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/WebAssembly/LinkerConfig.xml b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/WebAssembly/LinkerConfig.xml new file mode 100644 index 000000000000..2b13b75c2be5 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/WebAssembly/LinkerConfig.xml @@ -0,0 +1,10 @@ + + + + + diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/WebAssembly/Program.cs b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/WebAssembly/Program.cs new file mode 100644 index 000000000000..46eb145f43ac --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/WebAssembly/Program.cs @@ -0,0 +1,13 @@ +namespace uno53AppWithLib; + +public class Program +{ + private static App? _app; + + public static int Main(string[] args) + { + Microsoft.UI.Xaml.Application.Start(_ => _app = new App()); + + return 0; + } +} diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/WebAssembly/WasmCSS/Fonts.css b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/WebAssembly/WasmCSS/Fonts.css new file mode 100644 index 000000000000..4fdd60555f79 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/WebAssembly/WasmCSS/Fonts.css @@ -0,0 +1,28 @@ +/** + When adding fonts here, make sure to add them using a base64 data uri, otherwise + fonts loading are delayed, and text may get displayed incorrectly. +*/ + +/* https://github.com/unoplatform/uno/issues/3954 */ +@font-face { + font-family: 'Segoe UI'; + src: local('Segoe UI'), local('-apple-system'), local('BlinkMacSystemFont'), local('Inter'), local('Cantarell'), local('Ubuntu'), local('Roboto'), local('Open Sans'), local('Noto Sans'), local('Helvetica Neue'), local('sans-serif'); +} + +@font-face { + font-family: 'Roboto'; + src: url(./Uno.Fonts.Roboto/Fonts/Roboto-Light.ttf) format('truetype'); + font-weight: 300; +} + +@font-face { + font-family: 'Roboto'; + src: url(./Uno.Fonts.Roboto/Fonts/Roboto-Regular.ttf) format('truetype'); + font-weight: 400; +} + +@font-face { + font-family: 'Roboto'; + src: url(./Uno.Fonts.Roboto/Fonts/Roboto-Medium.ttf) format('truetype'); + font-weight: 500; +} diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/WebAssembly/WasmScripts/AppManifest.js b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/WebAssembly/WasmScripts/AppManifest.js new file mode 100644 index 000000000000..be0f8981dfe2 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/WebAssembly/WasmScripts/AppManifest.js @@ -0,0 +1,3 @@ +var UnoAppManifest = { + displayName: "uno53AppWithLib" +} diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/WebAssembly/manifest.webmanifest b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/WebAssembly/manifest.webmanifest new file mode 100644 index 000000000000..5c4e44c05067 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/WebAssembly/manifest.webmanifest @@ -0,0 +1,10 @@ +{ + "background_color": "#ffffff", + "description": "uno53AppWithLib", + "display": "standalone", + "name": "uno53AppWithLib", + "short_name": "uno53AppWithLib", + "start_url": "/index.html", + "theme_color": "#ffffff", + "scope": "/" +} diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/WebAssembly/wwwroot/staticwebapp.config.json b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/WebAssembly/wwwroot/staticwebapp.config.json new file mode 100644 index 000000000000..79c1b17c4b51 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/WebAssembly/wwwroot/staticwebapp.config.json @@ -0,0 +1,30 @@ +{ + "navigationFallback": { + "rewrite": "/index.html", + "exclude": [ + "*.{css,js}", + "*.{png}", + "*.{c,h,wasm,clr,pdb,dat,txt}" + ] + }, + "routes": [ + { + "route": "/package_*", + "headers": { + "cache-control": "public, immutable, max-age=31536000" + } + }, + { + "route": "/*.ttf", + "headers": { + "cache-control": "public, immutable, max-age=31536000" + } + }, + { + "route": "/*", + "headers": { + "cache-control": "must-revalidate, max-age=3600" + } + } + ] +} diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/WebAssembly/wwwroot/web.config b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/WebAssembly/wwwroot/web.config new file mode 100644 index 000000000000..8f5a860f5fd7 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/WebAssembly/wwwroot/web.config @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Windows/Properties/PublishProfiles/win-arm64.pubxml b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Windows/Properties/PublishProfiles/win-arm64.pubxml new file mode 100644 index 000000000000..d5147f1039d7 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Windows/Properties/PublishProfiles/win-arm64.pubxml @@ -0,0 +1,22 @@ + + + + + FileSystem + arm64 + win-arm64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + False + True + + + + diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Windows/Properties/PublishProfiles/win-x64.pubxml b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Windows/Properties/PublishProfiles/win-x64.pubxml new file mode 100644 index 000000000000..4fea954ee1f6 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Windows/Properties/PublishProfiles/win-x64.pubxml @@ -0,0 +1,22 @@ + + + + + FileSystem + x64 + win-x64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + False + True + + + + diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Windows/Properties/PublishProfiles/win-x86.pubxml b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Windows/Properties/PublishProfiles/win-x86.pubxml new file mode 100644 index 000000000000..928cb25ebd83 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/Windows/Properties/PublishProfiles/win-x86.pubxml @@ -0,0 +1,22 @@ + + + + + FileSystem + x86 + win-x86 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + False + True + + + + diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/iOS/Entitlements.plist b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/iOS/Entitlements.plist new file mode 100644 index 000000000000..24c3103683fa --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/iOS/Entitlements.plist @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/iOS/Info.plist b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/iOS/Info.plist new file mode 100644 index 000000000000..ea3dcb4bc03a --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/iOS/Info.plist @@ -0,0 +1,43 @@ + + + + + LSRequiresIPhoneOS + + UIDeviceFamily + + 1 + 2 + + UIRequiredDeviceCapabilities + + armv7 + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + XSAppIconAssets + Assets.xcassets/icon.appiconset + UIApplicationSupportsIndirectInputEvents + + + + + diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/iOS/Main.iOS.cs b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/iOS/Main.iOS.cs new file mode 100644 index 000000000000..cc03b52e7252 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/iOS/Main.iOS.cs @@ -0,0 +1,14 @@ +using UIKit; + +namespace uno53AppWithLib.iOS; + +public class EntryPoint +{ + // This is the main entry point of the application. + public static void Main(string[] args) + { + // if you want to use a different Application Delegate class from "AppDelegate" + // you can specify it here. + UIApplication.Main(args, null, typeof(App)); + } +} diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/iOS/Media.xcassets/LaunchImages.launchimage/Contents.json b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/iOS/Media.xcassets/LaunchImages.launchimage/Contents.json new file mode 100644 index 000000000000..69555e44061e --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Platforms/iOS/Media.xcassets/LaunchImages.launchimage/Contents.json @@ -0,0 +1,58 @@ +{ + "images": [ + { + "orientation": "portrait", + "extent": "full-screen", + "minimum-system-version": "7.0", + "scale": "2x", + "size": "640x960", + "idiom": "iphone" + }, + { + "orientation": "portrait", + "extent": "full-screen", + "minimum-system-version": "7.0", + "subtype": "retina4", + "scale": "2x", + "size": "640x1136", + "idiom": "iphone" + }, + { + "orientation": "portrait", + "extent": "full-screen", + "minimum-system-version": "7.0", + "scale": "1x", + "size": "768x1024", + "idiom": "ipad" + }, + { + "orientation": "landscape", + "extent": "full-screen", + "minimum-system-version": "7.0", + "scale": "1x", + "size": "1024x768", + "idiom": "ipad" + }, + { + "orientation": "portrait", + "extent": "full-screen", + "minimum-system-version": "7.0", + "scale": "2x", + "size": "1536x2048", + "idiom": "ipad" + }, + { + "orientation": "landscape", + "extent": "full-screen", + "minimum-system-version": "7.0", + "scale": "2x", + "size": "2048x1536", + "idiom": "ipad" + } + ], + "properties": {}, + "info": { + "version": 1, + "author": "" + } +} \ No newline at end of file diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Properties/launchSettings.json b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Properties/launchSettings.json new file mode 100644 index 000000000000..797b43d870aa --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Properties/launchSettings.json @@ -0,0 +1,50 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:8080", + "sslPort": 0 + } + }, + "profiles": { + // This profile is first in order for dotnet run to pick it up by default + "uno53AppWithLib (WebAssembly)": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "http://localhost:5000", + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "uno53AppWithLib (WebAssembly IIS Express)": { + "commandName": "IISExpress", + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + // Note: In order to select this profile, you'll need to comment the `Packaged` profile below until this is fixed: https://aka.platform.uno/wasdk-maui-debug-profile-issue + "uno53AppWithLib (WinAppSDK Unpackaged)": { + "commandName": "Project", + "compatibleTargetFramework": "windows" + }, + "uno53AppWithLib (WinAppSDK Packaged)": { + "commandName": "MsixPackage", + "compatibleTargetFramework": "windows" + }, + "uno53AppWithLib (Desktop)": { + "commandName": "Project", + "compatibleTargetFramework": "desktop" + }, + "uno53AppWithLib (Desktop WSL2)": { + "commandName": "WSL2", + "commandLineArgs": "{ProjectDir}/bin/Debug/net9.0-desktop/uno53AppWithLib.dll", + "distributionName": "", + "compatibleTargetFramework": "desktop" + } + } +} diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/ReadMe.md b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/ReadMe.md new file mode 100644 index 000000000000..08a00bfb66af --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/ReadMe.md @@ -0,0 +1,7 @@ +# Getting Started + +Welcome to the Uno Platform! + +To discover how to get started with your new app: https://aka.platform.uno/get-started + +For more information on how to upgrade Uno Platform packages in your solution: https://aka.platform.uno/upgrade-uno-packages \ No newline at end of file diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Strings/en/Resources.resw b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Strings/en/Resources.resw new file mode 100644 index 000000000000..89ce48c0adbf --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/Strings/en/Resources.resw @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + uno53AppWithLib-en + + diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/app.manifest b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/app.manifest new file mode 100644 index 000000000000..5a224e7b0a0a --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/app.manifest @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + true/PM + PerMonitorV2, PerMonitor + + + diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/test_root_asset.json b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/test_root_asset.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/test_root_asset.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/test_root_asset_not_included.json b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/test_root_asset_not_included.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/test_root_asset_not_included.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/uno53AppWithLib.csproj b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/uno53AppWithLib.csproj new file mode 100644 index 000000000000..076633aa5eb1 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53AppWithLib/uno53AppWithLib.csproj @@ -0,0 +1,172 @@ + + + net9.0-browserwasm;net9.0-desktop;net9.0 + $(TargetFrameworks);net9.0-android;net9.0-ios;net9.0-maccatalyst;net9.0-desktop + $(TargetFrameworks);net9.0-windows10.0.19041 + + + $(TargetFrameworks.Replace('net9.0-android','')) + $(TargetFrameworks.Replace('net9.0-ios','')) + $(TargetFrameworks.Replace('net9.0-maccatalyst','')) + + Exe + true + + + uno53AppWithLib + + com.companyname.uno53appwithlib + + 1.0 + 1 + + + + + + + + $(NoWarn);NU1605;IL2026;IL2008;IL2104 + + + + + + + + + + + + + + + + <_AssetsToValidate Include="$(OutputPath)Assets\SharedAssets.md" /> + <_AssetsToValidate Include="$(OutputPath)Assets\Icons\icon_foreground.png" /> + <_AssetsToValidate Include="$(OutputPath)Assets\Icons\icon_foreground.scale-100.png" /> + <_AssetsToValidate Include="$(OutputPath)Assets\Icons\icon_foreground.scale-125.png" /> + <_AssetsToValidate Include="$(OutputPath)Assets\Icons\icon_foreground.scale-150.png" /> + <_AssetsToValidate Include="$(OutputPath)Assets\Icons\icon_foreground.scale-200.png" /> + <_AssetsToValidate Include="$(OutputPath)Assets\Icons\icon_foreground.scale-300.png" /> + <_AssetsToValidate Include="$(OutputPath)Assets\Icons\icon_foreground.scale-400.png" /> + + + <_AssetsToValidate Include="$(OutputPath)test_root_asset.json" /> + <_AssetsToValidate Include="$(OutputPath)test_root_asset_not_included.json" MustNotExist="true" /> + + + <_AssetsToValidate Include="$(OutputPath)\uno53lib\Assets\test.xml" /> + <_AssetsToValidate Include="$(OutputPath)\uno53lib\Assets\icon_lib.png" /> + <_AssetsToValidate Include="$(OutputPath)\uno53lib\Assets\Svg\myimage.svg" /> + + + + <_AssetsToValidate Include="$(OutputPath)wwwroot\Assets\SharedAssets.md" /> + <_AssetsToValidate Include="$(OutputPath)wwwroot\Assets\json_file_asset.json" /> + <_AssetsToValidate Include="$(OutputPath)wwwroot\Assets\Icons\icon_foreground.png" /> + <_AssetsToValidate Include="$(OutputPath)wwwroot\Assets\Icons\icon_foreground.scale-100.png" /> + <_AssetsToValidate Include="$(OutputPath)wwwroot\Assets\Icons\icon_foreground.scale-125.png" /> + <_AssetsToValidate Include="$(OutputPath)wwwroot\Assets\Icons\icon_foreground.scale-150.png" /> + <_AssetsToValidate Include="$(OutputPath)wwwroot\Assets\Icons\icon_foreground.scale-200.png" /> + <_AssetsToValidate Include="$(OutputPath)wwwroot\Assets\Icons\icon_foreground.scale-300.png" /> + <_AssetsToValidate Include="$(OutputPath)wwwroot\Assets\Icons\icon_foreground.scale-400.png" /> + + + <_AssetsToValidate Include="$(OutputPath)wwwroot\..\staticwebapp.config.json" /> + <_AssetsToValidate Include="$(OutputPath)wwwroot\..\web.config" /> + + + <_AssetsToValidate Include="$(OutputPath)wwwroot\test_root_asset.json" /> + <_AssetsToValidate Include="$(OutputPath)wwwroot\test_root_asset_not_included.json" MustNotExist="true" /> + + + + + + + + + + + + <_StaticAssetsToValidate Include="uno53lib-test.xml" /> + <_StaticAssetsToValidate Include="uno53lib_icon_lib.png" /> + + + + + + + + @(StaticWebAssetsRuntimeLines) + + + + + + + + + + <_AssetsToValidate Include="$(PublishDir)wwwroot\Assets\SharedAssets.md" /> + <_AssetsToValidate Include="$(PublishDir)wwwroot\Assets\json_file_asset.json" /> + <_AssetsToValidate Include="$(PublishDir)wwwroot\Assets\Icons\icon_foreground.png" /> + <_AssetsToValidate Include="$(PublishDir)wwwroot\Assets\Icons\icon_foreground.scale-100.png" /> + <_AssetsToValidate Include="$(PublishDir)wwwroot\Assets\Icons\icon_foreground.scale-125.png" /> + <_AssetsToValidate Include="$(PublishDir)wwwroot\Assets\Icons\icon_foreground.scale-150.png" /> + <_AssetsToValidate Include="$(PublishDir)wwwroot\Assets\Icons\icon_foreground.scale-200.png" /> + <_AssetsToValidate Include="$(PublishDir)wwwroot\Assets\Icons\icon_foreground.scale-300.png" /> + <_AssetsToValidate Include="$(PublishDir)wwwroot\Assets\Icons\icon_foreground.scale-400.png" /> + + + <_AssetsToValidate Include="$(PublishDir)wwwroot\staticwebapp.config.json" /> + <_AssetsToValidate Include="$(OutputPath)wwwroot\web.config" /> + + + <_AssetsToValidate Include="$(PublishDir)wwwroot\test_root_asset.json" /> + <_AssetsToValidate Include="$(PublishDir)wwwroot\test_root_asset_not_included.json" MustNotExist="true" /> + + + <_AssetsToValidate Include="$(PublishDir)wwwroot\uno53lib\Assets\uno53lib-test.xml" /> + <_AssetsToValidate Include="$(PublishDir)wwwroot\uno53lib\Assets\uno53lib_icon_lib.png" /> + + + + + + + + + diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53emptylib/uno53emptylib.csproj b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53emptylib/uno53emptylib.csproj new file mode 100644 index 000000000000..b120da34a989 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53emptylib/uno53emptylib.csproj @@ -0,0 +1,42 @@ + + + net9.0-browserwasm;net9.0-desktop;net9.0 + $(TargetFrameworks);net9.0-android;net9.0-ios;net9.0-maccatalyst;net9.0-desktop + $(TargetFrameworks);net9.0-windows10.0.19041 + + + $(TargetFrameworks.Replace('net9.0-android','')) + $(TargetFrameworks.Replace('net9.0-ios','')) + $(TargetFrameworks.Replace('net9.0-maccatalyst','')) + + true + Library + + true + enable + enable + + + + + + + + + + \ No newline at end of file diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Assets/Svg/myimage.svg b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Assets/Svg/myimage.svg new file mode 100644 index 000000000000..8ffc41ae3a5d --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Assets/Svg/myimage.svg @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Assets/Svg/uno53lib_myimage.svg b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Assets/Svg/uno53lib_myimage.svg new file mode 100644 index 000000000000..8ffc41ae3a5d --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Assets/Svg/uno53lib_myimage.svg @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Assets/icon_lib.svg b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Assets/icon_lib.svg new file mode 100644 index 000000000000..a15af53aab30 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Assets/icon_lib.svg @@ -0,0 +1,42 @@ + + + + + + diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Assets/test.xml b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Assets/test.xml new file mode 100644 index 000000000000..f22294070541 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Assets/test.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Assets/uno53lib-test.xml b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Assets/uno53lib-test.xml new file mode 100644 index 000000000000..f22294070541 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Assets/uno53lib-test.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Assets/uno53lib_icon_lib.svg b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Assets/uno53lib_icon_lib.svg new file mode 100644 index 000000000000..a15af53aab30 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Assets/uno53lib_icon_lib.svg @@ -0,0 +1,42 @@ + + + + + + diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Class1.cs b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Class1.cs new file mode 100644 index 000000000000..d997135b2be5 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Class1.cs @@ -0,0 +1,6 @@ +namespace uno53lib; + +public class Class1 +{ +} + diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Platforms/Android/AndroidClass1.cs b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Platforms/Android/AndroidClass1.cs new file mode 100644 index 000000000000..63912999a1d9 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Platforms/Android/AndroidClass1.cs @@ -0,0 +1,6 @@ +namespace uno53SingleProjectLib.Platforms.Droid; + +public class AndroidClass1 +{ + +} diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Platforms/Desktop/DesktopClass1.cs b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Platforms/Desktop/DesktopClass1.cs new file mode 100644 index 000000000000..54f56f0031ca --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Platforms/Desktop/DesktopClass1.cs @@ -0,0 +1,6 @@ +namespace uno53SingleProjectLib.Platforms.Desktop; + +public class DesktopClass1 +{ + +} diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Platforms/MacCatalyst/MacCatalystClass1.cs b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Platforms/MacCatalyst/MacCatalystClass1.cs new file mode 100644 index 000000000000..e45d38dd26d8 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Platforms/MacCatalyst/MacCatalystClass1.cs @@ -0,0 +1,6 @@ +namespace uno53SingleProjectLib.Platforms.MacCatalyst; + +public class MacCatalystClass1 +{ + +} diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Platforms/WebAssembly/WebAssemblyClass1.cs b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Platforms/WebAssembly/WebAssemblyClass1.cs new file mode 100644 index 000000000000..78b590ca6dc3 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Platforms/WebAssembly/WebAssemblyClass1.cs @@ -0,0 +1,6 @@ +namespace uno53SingleProjectLib.Platforms.WebAssembly; + +public class WebAssemblyClass1 +{ + +} diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Platforms/Windows/WindowsClass1.cs b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Platforms/Windows/WindowsClass1.cs new file mode 100644 index 000000000000..d94ca0296d37 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Platforms/Windows/WindowsClass1.cs @@ -0,0 +1,6 @@ +namespace uno53SingleProjectLib.Platforms.Windows; + +public class WindowsClass1 +{ + +} diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Platforms/iOS/iOSClass1.cs b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Platforms/iOS/iOSClass1.cs new file mode 100644 index 000000000000..36487456c807 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/Platforms/iOS/iOSClass1.cs @@ -0,0 +1,6 @@ +namespace uno53SingleProjectLib.Platforms.iOS; + +public class iOSClass1 +{ + +} diff --git a/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/uno53lib.csproj b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/uno53lib.csproj new file mode 100644 index 000000000000..39abe829b117 --- /dev/null +++ b/src/SolutionTemplate/5.3/uno53AppWithLib/uno53lib/uno53lib.csproj @@ -0,0 +1,42 @@ + + + net9.0-browserwasm;net9.0-desktop;net9.0 + $(TargetFrameworks);net9.0-android;net9.0-ios;net9.0-maccatalyst;net9.0-desktop + $(TargetFrameworks);net9.0-windows10.0.19041 + + + $(TargetFrameworks.Replace('net9.0-android','')) + $(TargetFrameworks.Replace('net9.0-ios','')) + $(TargetFrameworks.Replace('net9.0-maccatalyst','')) + + true + Library + + true + enable + enable + + + + + + + + + + \ No newline at end of file diff --git a/src/SourceGenerators/Uno.UI.Tasks/Content/uno.ui.tasks.assets.targets b/src/SourceGenerators/Uno.UI.Tasks/Content/uno.ui.tasks.assets.targets index 70ec7b5fff90..5eeaceb05597 100644 --- a/src/SourceGenerators/Uno.UI.Tasks/Content/uno.ui.tasks.assets.targets +++ b/src/SourceGenerators/Uno.UI.Tasks/Content/uno.ui.tasks.assets.targets @@ -5,7 +5,7 @@ Condition="'$(_IsUnoUISolution)'==''" AssemblyFile="$(UnoUIMSBuildTasksPath)\Uno.UI.Tasks.v0.dll" TaskName="Uno.UI.Tasks.Assets.ExpandPackageAssets_v0" /> - + $(TargetsForTfmSpecificContentInPackage);_UnoIncludeLibraryAssets - + $(AssemblyName) $(UnoPriInitialPath).uprimarker $(TargetDir)$(ProjectUnoPriFileName) @@ -35,7 +35,7 @@ AfterTargets="_UnoGeneratePriMarker" DependsOnTargets="_DefineUnoPriProperties" BeforeTargets="GetCopyToOutputDirectoryItems"> - + <_AllChildProjectItemsWithTargetPath Include="$(ProjectUnoPriFullPath)"> $(ProjectUnoPriFileName) @@ -45,7 +45,7 @@ - + + + + + + <_UnoBootstrapServerReference Include="@(PackageReference)" Condition="'%(Identity)'=='Uno.Wasm.Bootstrap.Server'" /> + + + + <_AllChildProjectPublishItemsWithTargetPath Include="@(ContentWithTargetPath)"> + + $(UnoPriInitialPath)$(_UnoDirectorySeparator)%(ContentWithTargetPath.Link) + $(UnoPriInitialPath)$(_UnoDirectorySeparator)%(ContentWithTargetPath.TargetPath) + PreserveNewest + PreserveNewest + + + + + +