Visual Studio — 微软的集成开发环境,支持通过Xamarin和.NET MAUI创建移动应用程序。IDE包括C#/F#/VB.NET编辑器、调试器、性能分析器、XAML设计器、Android/iOS模拟器以及与Azure DevOps的集成。Microsoft.com上的Visual Studio — Community、Professional和Enterprise版本的入口。
要点
Visual Studio — 微软的旗舰IDE,发布于1997年。对于移动开发,Visual Studio提供两个主要框架:Xamarin(旧版,支持至2028年)和.NET MAUI(当前版本,自2021年的.NET 6开始)。IDE提供Community(小团队免费)、Professional和Enterprise版本。
当前版本 — Visual Studio 2025 (v18.0) 附带.NET 10 SDK。IDE支持所有平台:Android(模拟器+物理设备)、iOS(通过Mac build host)、Windows(本机调试)、macOS(通过Parallels或Mac Agent)。根据Stack Overflow 2025的数据,32%使用.NET技术栈的移动开发者使用Visual Studio。
VS Mobile的关键特性:采用SDK风格(MSBuild)的.sln/.csproj格式项目、通过NuGet进行包管理、用于可视UI编辑的XAML Designer、IntelliCode(基于GPT-4的AI代码补全)、用于远程结对编程的Live Share。
.NET MAUI(Multi-platform App UI)— 微软用于从单一C#代码库创建原生UI的框架。与Xamarin.Forms不同,MAUI为所有平台使用单个项目(single project),而不是单独的Android/iOS项目。资源分布在Platforms/Android、Platforms/iOS、Platforms/Windows文件夹中。
<!-- MainPage.xaml — .NET MAUI UI —>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MyApp.MainPage">
<VerticalStackLayout Spacing="12" Padding="16">
<Label Text="Hello, .NET MAUI!"
FontSize="24"
HorizontalOptions="Center" />
<Button Text="Load Data"
Clicked="OnLoadClicked"
BackgroundColor="#512BD4" />
<CollectionView x:Name="ItemsList" />
</VerticalStackLayout>
</ContentPage>MAUI中的MVVM和DI:框架包含内置DI容器(Microsoft.Extensions.DependencyInjection)、用于导航的Shell(TabBar、Flyout、Routing)以及用于生成INotifyPropertyChanged的CommunityToolkit.Mvvm。BindableLayout通过BindableLayout.ItemsSource支持对非ItemsView元素的数据绑定。
// MainPage.xaml.cs — 使用DI的代码隐藏
public partial class MainPage : ContentPage
{
private readonly IApiService _api;
public MainPage(IApiService api)
{
InitializeComponent();
_api = api;
}
private async void OnLoadClicked(object sender, EventArgs e)
{
var items = await _api.GetItemsAsync();
ItemsList.ItemsSource = items;
}
}Xamarin.Essentials → MAUI Essentials:访问原生API:地理位置、加速度计、文件系统、安全存储(SecureStorage)、生物识别、振动、拨打电话。API从共享的C#代码中调用 — MAUI自动将其转换为Android(Java/Kotlin绑定)和iOS(Objective-C/Swift绑定)。
Xamarin — .NET MAUI的前身,于2011年发布,2016年被微软收购。Xamarin使用独立的项目:Xamarin.Android(C# + Android绑定)、Xamarin.iOS(C# + iOS绑定)和Xamarin.Forms(通过XAML共享UI)。微软于2023年宣布Xamarin SDK已过时,但支持将持续到2028年5月。
从Xamarin迁移到MAUI — 通过.NET Upgrade Assistant实现的自动化过程。主要变化:SDK风格的.csproj替代旧风格、单一项目替代独立项目、Shell替代NavigationPage、WinUI替代UWP。微软为Xamarin.Forms → .NET MAUI提供迁移指南,包含分步说明和兼容性分析器。
Xamarin.Android vs Xamarin.iOS 在架构上有所不同:Xamarin.Android使用JNI Bridge调用Java代码,Xamarin.iOS则将C#预编译(AOT)为本机ARM。Xamarin.iOS不支持JIT — 由于Apple的限制,所有iOS应用程序都必须经过AOT编译。
Visual Studio中的XAML Designer — 可视化的XAML界面编辑器,包含Toolbox面板(组件)、Properties(所选元素的属性)和Document Outline(元素树)。Designer支持Data Binding预览(用于设计时数据的d:DataContext)和不同的主题。
XAML Hot Reload — 无需停止应用程序即可更改XAML代码。Hot Reload在运行中的模拟器或设备上在一秒内更新UI。在Visual Studio 2025中,Hot Reload支持所有MAUI元素:ContentPage、ContentView、ResourceDictionary、Styles、DataTemplates。对于C#代码隐藏,提供.NET Hot Reload(无需重启即可更改方法)。
Live Visual Tree — 正在运行的UI检查器:显示元素的层次结构、它们的属性和当前状态。与Hot Reload结合,Live Visual Tree允许在运行时更改元素属性并立即在设备屏幕上看到结果。
在Visual Studio中进行iOS开发需要连接到Mac build host — 一台装有Xcode和Apple SDK的macOS计算机。Visual Studio通过SSH连接到Mac Agent,发送源代码,Mac编译iOS二进制文件并返回结果。没有Mac build host,即使在Visual Studio中编译iOS项目也是不可能的。
设置Mac build host:在macOS上安装Xcode和Visual Studio for Mac Agent,在系统设置中启用远程登录,在Visual Studio中通过Tools → iOS → Pair to Mac进行配对。对于云端构建,可以使用MacStadium或MacinCloud。Microsoft Azure Pipelines也支持macOS托管代理。
Visual Studio中的iOS模拟器在Mac上运行,并通过远程模拟器传输到Windows。Visual Studio 2025使用Mac上的Xcode 16模拟器直接在Windows桌面上显示iOS模拟器。
Visual Studio中的Android SDK Manager管理Android SDK、构建工具、平台(API 34、35、36)和模拟器系统映像的安装。Visual Studio在首次打开Android项目时自动下载必要的组件。或者,也可以使用已安装的Android Studio SDK。
Android Emulator集成在Visual Studio中:从Debug → Start Without Debugging菜单启动模拟器、从列表中选择AVD、使用断点调试、通过Android Profiler进行性能分析。Visual Studio支持Hyper-V(Windows 11)和WSL2以加速模拟。Android调试桥(ADB)可通过Developer PowerShell命令行使用。
Google Play Services通过NuGet连接(Xamarin.GooglePlayServices.*或MAUI.GooglePlayServices.*)。Visual Studio自动为Firebase和Maps配置Google Services JSON/XML。IntelliCode根据项目的.NET TFM建议正确的using指令和包版本。
常见问题
.NET MAUI — Xamarin.Forms的进化版,具有单一项目、内置DI、Shell、WinUI支持和现代SDK风格的.csproj。Xamarin.Forms需要为每个平台单独创建项目,并且不原生支持Windows 11。MAUI由于.NET 8/10 SDK,编译速度也更快。
可以,通过Native References和Binding Projects。对于Android — Xamarin/MAUI绑定库(.jar → .dll)。对于iOS — .xcframework → 静态库绑定。Kotlin/Swift库被封装在C#代理类中。.NET MAUI通过Platforms/Android/*.java或Platforms/iOS/*.swift文件夹支持平台特定代码。
在Visual Studio中使用.NET Upgrade Assistant:项目 → 升级。该工具转换.csproj、XAML命名空间(Xamarin.Forms → MAUI)、替换过时的API。对于独立的Xamarin.Android/iOS项目 — 首先合并到Xamarin.Forms,然后进行迁移。微软估计典型的中型项目迁移需要2-4周。
是的,.NET MAUI通过额外的目标框架名字对象(TFM)支持watchOS和tvOS。对于watchOS,需要在XAML中使用兼容watchOS的元素(WKInterfaceLabel等)进行标记,并且必须具有包含tvOS/watchOS SDK的Mac build host。
主要替代方案:Visual Studio Code配合C# Dev Kit(轻量版,无XAML Designer)、JetBrains Rider(支持MAUI的跨平台IDE)、Rider + Unity(用于游戏)。Rider在macOS的.NET开发者中很受欢迎,因为Visual Studio for Mac已于2025年停止维护。
总结
我们将开发一款交钥匙移动应用程序
IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。