首页 > 其他分享 >在 Visual Studio 中创建 .NET MAUI 项目

在 Visual Studio 中创建 .NET MAUI 项目

时间:2023-09-25 10:13:15浏览次数:36  
标签:... 应用程序 Visual 文件夹 Studio 应用 MAUI NET

安装并配置 .NET MAUI 工具后,可以使用 Visual Studio 生成 .NET MAUI 应用。

在本单元中,你将了解 Visual Studio 中 .NET MAUI 模板的结构。 你将使用此模板创建跨平台移动和桌面应用。

如何入门

若要使用 Visual Studio 创建新的 .NET MAUI 项目,请在“创建新项目”对话框中选择 .NET MAUI 项目类型,然后选择 .NET MAUI 应用模板:

Visual Studio 中“创建新项目”对话框的屏幕截图。用户已选择 .NET MAUI 应用模板。

按照向导中的步骤命名项目并指定位置。

新创建的 .NET MAUI 项目包含如下所示的项:

屏幕截图显示 Visual Studio 中新 .NET MAUI 解决方案的默认结构的解决方案资源管理器。

.NET MAUI 项目结构和应用程序启动

项目内容包括以下项:

  • App.xaml。 此文件定义应用将在 XAML 布局中使用的应用程序资源。 默认资源位于 Resources 文件夹中,并为每个 .NET MAUI 内置控件定义应用范围内的颜色和默认样式。 在此处,你会看到将合并在一起的两个资源字典:

    XML
    <?xml version = "1.0" encoding = "UTF-8" ?>
    <Application xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
                 xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                 xmlns:local="clr-namespace:MyMauiApp"
                 x:Class="MyMauiApp.App">
        <Application.Resources>
            <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>
                    <ResourceDictionary Source="Resources/Colors.xaml" />
                    <ResourceDictionary Source="Resources/Styles.xaml" />
                </ResourceDictionary.MergedDictionaries>
            </ResourceDictionary>
        </Application.Resources>
    </Application>
    
  • App.xaml.cs。 这是 App.xaml 文件的代码隐藏文件。 此文件定义 App 类。 此类表示运行时的应用程序。 此类中的构造函数创建一个初始窗口并将其分配给 MainPage 属性;此属性确定应用程序开始运行时显示哪个页面。 此外,此类使你能够替代常见的平台中性应用程序生命周期事件处理程序。 事件包括 OnStartOnResume 和 OnSleep。 这些处理程序定义为 Application 基类的成员。 下面的代码演示了示例:

     备注

    当应用首次开始运行时,还可以替代特定于平台的生命周期事件。 稍后将对此进行说明。

    C#
    namespace MyMauiApp;
    
    public partial class App : Application
    {
        public App()
        {
            InitializeComponent();
    
            MainPage = new AppShell();
        }
    
        protected override void OnStart()
        {
            base.OnStart();
        }
    
        protected override void OnResume()
        {
            base.OnResume();
        }
    
        protected override void OnSleep()
        {
            base.OnSleep();
        }
    }
    
  • AppShell.xaml。 此文件是 .NET MAUI 应用程序的主要结构。 .NET MAUI Shell 提供了许多对多平台应用有益的功能,包括应用样式、基于 URI 的导航、布局选项(例如浮出控件导航、应用程序根文件的选项卡)。 默认模板提供在应用启动时扩充的单个页面(或 ShellContent)。

    XML
      <?xml version="1.0" encoding="UTF-8" ?>
      <Shell
          x:Class="MyMauiApp.AppShell"
          xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
          xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
          xmlns:local="clr-namespace:MyMauiApp"
          Shell.FlyoutBehavior="Disabled">
    
          <ShellContent
              Title="Home"
              ContentTemplate="{DataTemplate local:MainPage}"
              Route="MainPage" />
    
      </Shell>
    
  • MainPage.xaml。 此文件包含用户界面定义。 MAUI 应用模板生成的示例应用包括两个标签、一个按钮和一个图像。 这些控件是使用包含在 ScrollView 中的 VerticalStackLayout 排列的。 VerticalStackLayout 控件可垂直排列控件(堆叠显示),而 ScrollView 提供滚动条,当视图太大而无法在设备上显示时可使用该滚动条。 你打算将此文件的内容替换为自己的 UI 布局。 如果有多页应用,还可以定义更多 XAML 页面。

    XML
    <?xml version="1.0" encoding="utf-8" ?>
    <ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
                 xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                 x:Class="MyMauiApp.MainPage">
    
        <ScrollView>
            <VerticalStackLayout 
                Spacing="25" 
                Padding="30,0" 
                VerticalOptions="Center">
    
                <Image
                    Source="dotnet_bot.png"
                    SemanticProperties.Description="Cute dot net bot waving hi to you!"
                    HeightRequest="200"
                    HorizontalOptions="Center" />
    
                <Label 
                    Text="Hello, World!"
                    SemanticProperties.HeadingLevel="Level1"
                    FontSize="32"
                    HorizontalOptions="Center" />
    
                <Label 
                    Text="Welcome to .NET Multi-platform App UI"
                    SemanticProperties.HeadingLevel="Level2"
                    SemanticProperties.Description="Welcome to dot net Multi platform App U I"
                    FontSize="18"
                    HorizontalOptions="Center" />
    
                <Button 
                    x:Name="CounterBtn"
                    Text="Click me"
                    SemanticProperties.Hint="Counts the number of times you click"
                    Clicked="OnCounterClicked"
                    HorizontalOptions="Center" />
    
            </VerticalStackLayout>
        </ScrollView>
    
    </ContentPage>
    
  • MainPage.xaml.cs。 这是页面的代码隐藏文件。 在此文件中,为页面上的控件触发的各种事件处理程序和其他操作定义逻辑。 示例代码实现页面上的按钮的 Clicked 事件处理程序。 代码只是递增计数器变量,并在页面上的标签中显示结果。 作为 MAUI Essentials 库的一部分提供的语义服务支持辅助功能。 SemanticScreenReader 类的静态 Announce 方法指定用户选择按钮时屏幕阅读器公布的文本:

    C#
    namespace MyMauiApp;
    
    public partial class MainPage : ContentPage
    {
        int count = 0;
    
        public MainPage()
        {
            InitializeComponent();
        }
    
        private void OnCounterClicked(object sender, EventArgs e)
        {
            count++;
    
            if (count == 1)
                CounterBtn.Text = $"Clicked {count} time";
            else
                CounterBtn.Text = $"Clicked {count} times";
    
            SemanticScreenReader.Announce(CounterBtn.Text);
        }
    }
    
  • MauiProgram.cs。 每个本机平台都有一个不同的起点,用于创建和初始化应用程序。 可以在项目中的 Platforms 文件夹中找到此代码。 此代码特定于平台,但最后调用静态 MauiProgram 类的 CreateMauiApp 方法。 使用 CreateMauiApp 方法通过创建应用生成器对象来配置应用程序。 至少需要指定描述应用程序的类。 使用应用生成器对象的 UseMauiApp 泛型方法执行此操作;类型参数指定应用程序类。 应用生成器还提供用于注册字体、为依赖项注入配置服务、为控件注册自定义处理程序等任务的方法。 以下代码展示了使用应用生成器注册字体的示例:

    C#
    namespace MyMauiApp;
    
    public static class MauiProgram
    {
        public static MauiApp CreateMauiApp()
        {
            var builder = MauiApp.CreateBuilder();
            builder
                .UseMauiApp<App>()
                .ConfigureFonts(fonts =>
                {
                    fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
                    fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
                });
    
            return builder.Build();
        }
    }
    
  • Platforms。 此文件夹包含特定于平台的初始化代码文件和资源。 有适用于 Android、iOS、MacCatalyst、Tizen 和 Windows 的文件夹。 在运行时,应用以特定于平台的方式启动。 大部分启动过程从 MAUI 库的内部抽离出来,但这些文件夹中的代码文件提供了挂钩自己的自定义初始化的机制。 重要的是,初始化完成后,特定于平台的代码将调用 MauiProgram.CreateMauiApp 方法,然后按照前面所述创建和运行 App 对象。 例如,Android 文件夹中的 MainApplication.cs 文件、iOS 和 MacCatalyst 文件夹中的 AppDelegate.cs 文件,以及 Windows 文件夹中的 App.xaml.cs 文件都包含替代:

    C#
    protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
    

下图演示了 .NET MAUI 应用启动时的控制流:

关系图显示 .NET MAUI 应用启动时的控制流。此流从本机特定的启动到创建 MAUI 应用函数,最后到应用对象构造函数。

项目资源

主项目的 .csproj 文件包含几个值得注意的部分。 初始 PropertyGroup 指定项目面向的平台框架,以及应用程序标题、ID、版本、显示版本和支持的操作系统等项。 可以根据需要修改这些属性。

XML
<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <TargetFrameworks>net6.0-android;net6.0-ios;net6.0-maccatalyst</TargetFrameworks>
        <TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net6.0-windows10.0.19041.0</TargetFrameworks>
        <!-- Uncomment to also build the tizen app. You will need to install tizen by following this: https://github.com/Samsung/Tizen.NET -->
        <!-- <TargetFrameworks>$(TargetFrameworks);net6.0-tizen</TargetFrameworks> -->
        <OutputType>Exe</OutputType>
        <RootNamespace>MyMauiApp</RootNamespace>
        <UseMaui>true</UseMaui>
        <SingleProject>true</SingleProject>
        <ImplicitUsings>enable</ImplicitUsings>

        <!-- Display name -->
        <ApplicationTitle>MyMauiApp</ApplicationTitle>

        <!-- App Identifier -->
        <ApplicationId>com.companyname.mymauiapp</ApplicationId>
        <ApplicationIdGuid>272B9ECE-E038-4E53-8553-E3C9EA05A5B2</ApplicationIdGuid>

        <!-- Versions -->
        <ApplicationDisplayVersion>1.0</ApplicationDisplayVersion>
        <ApplicationVersion>1</ApplicationVersion>

        <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">14.2</SupportedOSPlatformVersion>
        <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'maccatalyst'">14.0</SupportedOSPlatformVersion>
        <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">21.0</SupportedOSPlatformVersion>
        <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</SupportedOSPlatformVersion>
        <TargetPlatformMinVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</TargetPlatformMinVersion>
        <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'tizen'">6.5</SupportedOSPlatformVersion>
    </PropertyGroup>
    ...

</Project>

通过初始属性组下的 ItemGroup 部分,可在第一个窗口出现之前,为应用加载时出现的初始屏幕指定图像和颜色。 还可以为应用使用的字体、图像和资产设置默认位置。

XML
<Project Sdk="Microsoft.NET.Sdk">

    ...

   <ItemGroup>
        <!-- App Icon -->
        <MauiIcon Include="Resources\appicon.svg" 
                  ForegroundFile="Resources\appiconfg.svg" 
                  Color="#512BD4" />

        <!-- Splash Screen -->
        <MauiSplashScreen Include="Resources\appiconfg.svg" 
                          Color="#512BD4" 
                          BaseSize="128,128" />

        <!-- Images -->
        <MauiImage Include="Resources\Images\*" />
        <MauiImage Update="Resources\Images\dotnet_bot.svg" 
                   BaseSize="168,208" />

        <!-- Custom Fonts -->
        <MauiFont Include="Resources\Fonts\*" />

        <!-- Raw Assets (also remove the "Resources\Raw" prefix) -->
        <MauiAsset Include="Resources\Raw\**" 
                   LogicalName="%(RecursiveDir)%(Filename)%(Extension)" />
    </ItemGroup>

    ...

</Project>

在 Visual Studio 的“解决方案资源管理器”窗口中,可以展开 Resources 文件夹来查看这些项。 可以将应用程序所需的任何其他字体、图像和其他图形资源添加到此文件夹和子文件夹。

屏幕截图显示 Visual Studio 解决方案资源管理器的主项目中的资源文件夹,它包围在一个矩形内。文件夹内是字体和图像文件。

应用开始运行时,应向应用生成器对象注册添加到 fonts 文件夹中的任何字体。 回想一下,MauiProgram 类中的 CreateMauiApp 方法使用 ConfigureFonts 方法执行此操作:

C#
public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();
        builder
            ...
            .ConfigureFonts(fonts =>
            {
                fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
            });

        ...
    }
}

在此示例中,AddFont 方法将字体与名称 OpenSansRegular 关联。 在页面的 XAML 说明或应用程序资源字典中设置项格式时,可以指定此字体:

XML
<Application ...">
    <Application.Resources>
        <ResourceDictionary>
            ...
            <Style TargetType="Button">
                ...
                <Setter Property="FontFamily" Value="OpenSansRegular" />
                ...
            </Style>

        </ResourceDictionary>
    </Application.Resources>
</Application>

在 Android 中使用 Resources 文件夹,并为 Android 和 iOS 特定于平台的资源使用 Platforms 文件夹下的 iOS 文件夹。

标签:...,应用程序,Visual,文件夹,Studio,应用,MAUI,NET
From: https://www.cnblogs.com/siyunianhua/p/17727268.html

相关文章

  • 描述 .NET MAUI 体系结构
    跨平台应用开发使用的一种常见模式是考虑用户界面中的业务逻辑,然后为每个平台开发单独的用户界面和UI逻辑。虽然每种类型的设备的业务逻辑保持不变,但驱动应用和显示数据的代码可能会有所不同。出现这种差异是因为设备所提供的功能、API和特性不相同。以这种方式构建多平台应......
  • 创建第一个 .NET MAUI 应用
    在本练习中,你将开始为杂货连锁店构建.NETMAUI应用。你将使用模板生成默认应用,并在Windows和Android模拟器中运行它。你将在稍后的练习中修改此应用,以自定义用户界面并添加杂货连锁店应用所需的功能。创建新项目打开VisualStudio并创建一个新的解决方案。此操作会......
  • FL Studio怎么激活图文安装教程?FL Studio 21中文版下载 v21.1.1.3750 汉化
    flstudio21.0.3.3517中文解锁特别版是一款功能强大的编曲软件,也就是众所熟知的水果软件。它可以编曲、剪辑、录音、混音,让您的计算机成为全功能录音室。除此之外,这款软件功能非常强大,为用户提供了许多音频处理工具,包含了编排,录制,编辑,混音和掌握专业品质音乐所需的一切,支持多音轨录......
  • camtasia studio下载-camtasia studio官方版下载 各个版本下载
    CamtasiaStudio中文版是专业的屏幕录像和后期编辑软件,能在任何颜色模式下轻松地记录屏幕动作(屏幕/摄像头),包括影像、音效、鼠标移动轨迹、解说声音等,具有即时播放和编辑压缩的功能,让用户可对视频即时播放和编辑压缩。本站提供CamtasiaStudio最新下载,有需要的朋友们快来体验吧。软......
  • 在Visual Studio2019中使用C#语言连接Sql Server数据库
    1、首先在visualstudio里面创建好自己的表服务资源管理器-->连接数据库:然后选择sqlserver数据库文件,并自定义数据库名称,显示不存在点击创建即可;2、创建自己的程序对应的字段的表3、连接数据库操作1、引入连接数据库需要使用的using关键字2、编写Connection代码语句这......
  • visual studio2019创建管理系统的数据库
    1、打开服务资源管理器然后选择sqlserver数据库文件:自定义数据库名称:显示不存在之后,选择创建即可,然后就看到服务资源管理器这里出现:2、右键表-->添加新表然后新建一个名为UserTable的表,存放用户数据信息,字段名为:UId、UName、UPhone、UAddress、UPassword:然后点击左......
  • 用户加载界面设计--基于C#和Visual Studio2019
    1、设定窗体位置为屏幕中心、修改窗体为无边框形式修改右下角的这里:修改为(屏幕中心打开):修改右下角这里:修改为(无边框形式):然后再调整修改页的大小(自由拉伸即可):之后调整边框背景颜色:为窗体重命名:2、打开工具箱,拖出一个Label标签在这里可以修改Label的字体样式:设置......
  • SAP HANA Studio安装
    官方教程基于Eclipse安装HANAStudio的方法参照SAP官网的教程https://tools.hana.ondemand.com/#hanatools插件安装下载并安装完Eclipse之后,打开菜单Help->InstallNewSoftware...针对不同版本的Eclipse,输入不同的地址,此处我们安装的是Neon(4.6)版本,所以输入地址并回车https:......
  • TVP 专家谈腾讯云 Cloud Studio:开启云端开发新篇章
    点击链接了解详情导语|近日,由腾讯云TVP团队倾力打造的TVP吐槽大会第六期「腾讯云CloudStudio」专场圆满落幕,6位资深的TVP专家深度体验腾讯云CloudStudio产品,提出了直击痛点的意见与建议,同时也充分肯定了腾讯云CloudStudio的实力与价值,帮助腾讯云CloudStudio......
  • VisualSVN Server的配置和使用方法
    一、VisualSVNServer的基本使用方法 安装好VisualSVNServer后【安装过程看这里】,运行VisualSVNServerManger,下面是启动界面: 好的,下面我来添加一个代码库【Repository】,如下图:按上图所示,创建新的代码库,在下图所示的文本框中输入代码库名称: 注意:上图中的CheckBox如果选中,则......