.NET 10에서 .NET 다중 플랫폼 앱 UI(.NET MAUI)의 초점은 제품 품질을 개선하는 것입니다. .NET 10 릴리스의 각 .NET MAUI의 새로운 내용에 대한 자세한 내용은 다음 릴리스 정보를 참조하세요.
- .NET 10 프리뷰 5에서의 .NET MAUI
- .NET 10 미리 보기 4에 있는 .NET MAUI
- .NET 10 프리뷰 3의 .NET MAUI
- .NET 10 Preview 2에서의 .NET MAUI
- .NET MAUI .NET 10 미리 보기 1
중요하다
외부 종속성인 Xcode 또는 Android SDK Tools로 인해 .NET MAUI의 지원 정책은 .NET 및 .NET Core의 지원 정책과다릅니다. 자세한 내용은 .NET MAUI 지원 정책 참조하세요.
.NET 10에서 .NET MAUI는 .NET 워크로드 및 여러 NuGet 패키지로 제공됩니다. 이 방법의 장점은 프로젝트를 특정 버전에 쉽게 고정하는 동시에 미공개 또는 실험적 빌드를 쉽게 미리 볼 수 있다는 점입니다.
암시적 및 전역 XML 네임스페이스가 있는 XAML(미리 보기 5)
.NET 10 Preview 5는 .NET MAUI에 대한 보다 깔끔한 XML 네임스페이스 환경을 도입하여, 모든 XAML 파일의 맨 위에 복사해 붙여넣었던 거의 모든 보일러플레이트 xmlns:
줄을 제거합니다.
변경 내용 | 작동 방식 |
---|---|
프로젝트 전체 "전역" 네임스페이스 |
http://schemas.microsoft.com/dotnet/maui/global 는 여러 xmln을 함께 집계하는 데 사용할 수 있는 새 xmlns입니다. 기본적으로 maui xmlns(sourcegenerated), {YourNamespace}, {YourNamespace}.Pages가 포함됩니다. |
이전 버전과 호환 | 기존 명시적 xmlns: 매핑은 여전히 컴파일됩니다. 중복 형식 이름을 구분해야 하는 경우에만 추가합니다. |
암시적 기본 네임스페이스 (옵트인) | 옵트인 기능을 활성화하면, 컴파일러가 이제 http://schemas.microsoft.com/dotnet/2021/maui 를 자동으로 삽입하므로 루트 xmlns 및 xmlns:x 줄을 삭제할 수 있습니다. |
이전 및 이후
<!-- .NET 8 style -->
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:models="clr-namespace:MyApp.Models"
xmlns:controls="clr-namespace:MyApp.Controls"
x:Class="MyApp.MainPage">
<controls:TagView x:DataType="models:Tag" />
</ContentPage>
<!-- .NET 10 Preview 5 -->
<ContentPage
xmlns="http://schemas.microsoft.com/dotnet/maui/global"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MyApp.MainPage">
<TagView x:DataType="Tag" />
</ContentPage>
변경:
-
xmlns:models
또는xmlns:controls
는GlobalXmlns.cs
파일에서 전역적으로 선언되었기 때문에 선언할 필요가 없습니다. -
TagView
또는Tag
에는 접두사가 필요 없습니다.
<!-- .NET 10 Preview 5 plus opt-in -->
<ContentPage x:Class="MyApp.MainPage">
<TagView x:DataType="Tag" />
</ContentPage>
변경:
-
xmlns
또는xmlns:x
를 선언할 필요가 없습니다. 이들은 전역 네임스페이스에 암시적으로 추가됩니다.
채택 방법
새 프로젝트를 만들어 간소화된 환경을 확인하거나 아래 세부 정보를 사용하여 기존 프로젝트를 업그레이드합니다.
- 프로젝트를 대상 프레임워크로
net10.0-
업그레이드합니다. - CLR 네임스페이스를 매핑하는 하나의 어셈블리 수준 파일(예:
GlobalXmlns.cs
)을 추가합니다. - XAML에서 중복
xmlns:
선 및 접두사를 삭제합니다. IntelliSense 및 핫 리로드는 훨씬 더 깨끗한 마크업과 함께 계속 잘 작동합니다.
<PropertyGroup>
<DefineConstants>$(DefineConstants);MauiAllowImplicitXmlnsDeclaration</DefineConstants>
<EnablePreviewFeatures>true</EnablePreviewFeatures>
</PropertyGroup>
샘플 GlobalXmlns.cs
[assembly: XmlnsDefinition(
"http://schemas.microsoft.com/dotnet/maui/global",
"MyApp.Views")]
[assembly: XmlnsDefinition(
"http://schemas.microsoft.com/dotnet/maui/global",
"MyApp.Controls")]
[assembly: XmlnsDefinition(
"http://schemas.microsoft.com/dotnet/maui/global",
"MyApp.Converters")]
XAML에서 xmlns 접두사를 계속 사용하려는 경우 기본 접두사 GlobalXmlns.cs
도 제공할 수 있습니다.
using XmlnsPrefixAttribute = Microsoft.Maui.Controls.XmlnsPrefixAttribute;
[assembly: XmlnsPrefix("MyApp.Controls","controls")]
이전과 같이 사용합니다.
<ContentPage x:Class="MyApp.MainPage">
<controls:TagView x:DataType="Tag" />
</ContentPage>
✨ 팁: 여기에서도 타사 라이브러리를 등록할 수 있습니다.
웹 요청 차단하기
HybridWebView
이제 브라우저가 웹 리소스를 요청할 때, 실행되기 전에 헤더를 추가하는 등의 작업을 수행할 수 있도록 요청을 가로챌 수 있습니다. 이렇게 하려면 WebResourceRequested
이벤트에 수신기를 추가합니다.
<HybridWebView WebResourceRequested="HybridWebView_WebResourceRequested" />
private void HybridWebView_WebResourceRequested(object sender, HybridWebViewWebResourceRequestedEventArgs e)
{
// NOTES:
// * This method MUST be synchronous, as it is called from the WebView's thread.
// * This method MUST return a response (even if it is not yet complete), otherwise the
// WebView may freeze or return a error response.
// * The response must be set using the SetResponse method of the event args.
// Only handle requests for the specific image URL
if (!e.Uri.ToString().Contains("sample-image.png"))
return;
// Prevent the default behavior of the web view
e.Handled = true;
// Return the stream or task of stream that contains the content
// NOTE: the method is NOT awaited, the WebView will continue to load the content
e.SetResponse(200, "OK", "image/png", GetStreamAsync());
}
.NET Aspire 통합
.NET 10용 .NET MAUI는 .NET MAUI를 위한 .NET Aspire 서비스 기본 설정 프로젝트를 생성하는 새로운 프로젝트 템플릿을 포함합니다. 이 기능은 원격 측정 및 서비스 검색을 귀하의 앱에 연결하는 확장 메서드 세트를 제공합니다.
앱에 원격 분석 및 서비스 검색을 연결하려면, CreateMauiApp
클래스에서 MauiProgram
메소드를 수정하여 AddServiceDefaults
객체에서 .NET Aspire 서비스 기본 설정 프로젝트의 MauiAppBuilder
메소드를 호출하십시오.
builder.AddServiceDefaults();
AddServiceDefaults
메서드는 다음 작업을 수행합니다:
- OpenTelemetry 메트릭 및 추적을 구성합니다.
- 서비스 탐색 기능을 추가합니다.
- 서비스 디스커버리와 함께 작동하도록 HttpClient를 구성합니다.
중요하다
.NET Aspire 서비스 기본 프로젝트는 Extensions.cs 파일과 그 기능을 공유하도록 설계되었습니다. 이 프로젝트에 다른 공유 기능이나 모델을 포함하지 마세요. 대신 이러한 용도로 공유 클래스 라이브러리 프로젝트를 사용합니다.
추가 정보는 .NET Aspire 서비스 기본값을 참조하세요.
애니메이션
FadeTo
, LayoutTo
, RelRotateTo
, RelScaleTo
, RotateTo
, RotateXTo
, RotateYTo
, ScaleTo
, ScaleXTo
, ScaleYTo
및 TranslateTo
메서드는 더 이상 사용되지 않으며 FadeToAsync
, LayoutToAsync
, RelRotateToAsync
, RelScaleToAsync
, RotateToAsync
, RotateXToAsync
, RotateYToAsync
, ScaleToAsync
, ScaleXToAsync
, ScaleYToAsync
, TranslateToAsync
메서드로 대체되었습니다.
추가 정보를 보려면 기본 애니메이션을 참조하세요.
제어
.NET 10의 .NET MAUI에는 컨트롤 향상 및 사용 중단 기능이 포함되어 있습니다.
CollectionView 및 CarouselView (컬렉션뷰 및 캐러셀뷰)
.NET 9의 .NET MAUI에는 iOS 및 Mac Catalyst에서 성능과 안정성을 향상시킨 두 가지 선택적 처리기가 포함되어 있습니다. CollectionView 및 CarouselView에서 성능 및 안정성 개선을 가져왔습니다. .NET 10에서는 CollectionView 및 CarouselView대한 기본 처리기입니다.
안드로이드에서 편집기 및 입력
Android에서 Editor 및 Entry 뷰는 고유 뷰를 AppCompatEditText
에서 MauiAppCompatEditText
로 변경하여 SelectionChanged
이벤트를 지원합니다.
HybridWebView
HybridWebView 반환 형식에 대한 정보를 지정하지 않고 지정된 JavaScript 메서드를 호출하는 InvokeJavaScriptAsync 오버로드를 가져옵니다. 자세한 내용은 값을 반환하지 않는 JavaScript 메서드 호출참조하세요.
기본적으로 JavaScript 코드에서 발생하는 모든 예외는 .NET으로 전송되어, .NET 예외로 다시 발생됩니다.
리스트뷰 (ListView)
ListView는 사용 중지되었으며, EntryCell, ImageCell, SwitchCell, TextCell, 및 ViewCell도 마찬가지입니다. 대신 CollectionView 사용해야 합니다.
비고
Cell는 현재 소스 생성에 사용되고 있기 때문에 더 이상 사용되지 않는 것이 아닙니다. 이는 더 이상 사용하지 않는 것이 좋습니다.
검색창
SearchBar 검색 아이콘의 색을 설정하는 SearchIconColor
바인딩 가능한 속성을 가져옵니다.
<SearchBar Placeholder="Search items..."
SearchIconColor="Blue" />
SearchBar에는 반환 버튼의 모양을 지정하는 ReturnType
바인더 속성도 포함됩니다. 이 속성의 유형은 ReturnType입니다. 이 속성의 기본값은 Search
입니다.
자세한 내용은 SearchBar참조하세요.
스위치
Switch 해제 상태일 때 스위치의 색을 설정하는 OffColor
바인딩 가능한 속성을 얻습니다.
<Switch OffColor="Red"
OnColor="Green" />
자세한 내용은 스위치참조하세요.
테이블 보기
TableView 더 이상 사용되지 않습니다. 대신 CollectionView 사용해야 합니다.
Android의 WebView
비디오가 안드로이드의 WebView에 호스팅될 경우, allowfullscreen
를 iframe
에 추가하여 전체 화면으로 재생할 수 있습니다.
자세한 내용은 비디오 전체 화면 재생을 참조하세요.
메시징 센터
MessagingCenter .NET 10에서 내부적으로 만들어졌습니다. 코드에서 그것의 사용은 WeakReferenceMessenger
NuGet 패키지의 으로 대체할 수 있습니다. 자세한 내용은 Messenger참조하세요.
그림자
.NET 10에서 ShadowTypeConverter
네임스페이스의 Microsoft.Maui.Controls
클래스는 이제 공용입니다.
서식이 지정된 문자열을 사용하여 그림자를 지정하는 방법에 대한 자세한 내용은 섀도참조하세요.
플랫폼 기능
.NET MAUI의 플랫폼 기능은 .NET 10에서 일부 업데이트를 받았습니다.
iOS 및 Mac Catalyst에서 모달 페이지를 팝오버로 표시
.NET 10용 .NET MAUI는 iOS 및 Mac Catalyst에서 모달 페이지를 팝오버로 표시하는 플랫폼별 기능을 추가합니다.
Page.ModalPopoverSourceView
바인딩 가능한 속성을 모달의 소스를 정의하는 View
로 설정하고, Page.ModalPopoverRect
바인딩 가능한 속성을 팝오버가 시작하는 보기 내의 사각형을 정의하는 Rectangle로 설정하며, Page.ModalPresentationStyle
바인딩 가능한 속성을 Popover
로 설정합니다.
using Microsoft.Maui.Controls.PlatformConfiguration;
using Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific;
public partial class PopoverPage : ContentPage
{
public PopoverPage(View modal, Rectangle rectangle)
{
InitializeComponent();
On<iOS>().SetModalPopoverView(modal);
On<iOS>().SetModalPopoverRect(rectangle);
On<iOS>().SetModalPresentationStyle(UIModalPresentationStyle.Popover);
}
}
그런 다음, Navigation.PushModalAsync
메서드를 사용하여 모달 페이지로 이동합니다.
Page modalPage = new PopoverPage(originButton, Rectangle.Empty);
await Navigation.PushModalAsync(modalPage);
자세한 내용은 iOS 및 Mac Catalyst팝오버로 모달 페이지 표시를 참조하세요.
지리적 위치
Geolocation 클래스는 위치 서비스가 디바이스에서 활성화되었는지 여부를 확인할 수 있는 읽기 전용 IsEnabled
속성을 갖게 됩니다.
iOS 및 Mac Catalyst 호환성 접근성 확장 기능
다음의 iOS 호환성 AccessibilityExtensions
확장 메서드는 Microsoft.Maui.Controls.Compatibility.Platform.iOS
에서 더 이상 사용되지 않습니다.
SetAccessibilityHint
SetAccessibilityLabel
SetAccessibilityHint
SetAccessibilityLabel
대신 Microsoft.Maui.Platform.UpdateSemantics
메서드를 사용해야 합니다.
iOS 및 Mac Catalyst에서 MauiWebViewNavigationDelegate 재정의
이제 MauiWebViewNavigationDelegate
네임스페이스에서 다음 Microsoft.Maui.Platform
메서드를 오버라이드할 수 있습니다.
DecidePolicy
DidFailNavigation
DidFailProvisionalNavigation
DidFinishNavigation
음성으로 변환
SpeechOptions 클래스는 Rate
기능을 사용할 때 음성 속도를 제어하는 TextToSpeech 속성을 얻습니다. 자세한 내용은 텍스트 음성 변환 설정 참조하세요.
웹 인증
WebAuthenticator는 AuthenticateAsync 메서드 오버로드를 통해 CancellationToken 인수를 사용하여 인증 흐름을 프로그래밍적으로 취소할 수 있는 기능을 얻습니다.
팝업
DisplayAlert
및 DisplayActionSheet
메서드는 더 이상 사용되지 않으며, DisplayAlertAsync
및 DisplayActionSheetAsync
메서드로 대체되었습니다.
자세한 정보는 팝업 표시를 참조하십시오.
XAML 마크업 확장
FontImageExtension XAML 태그 확장은 더 이상 사용되지 않습니다. 대신 FontImageSource 형식을 사용해야 합니다.
<Button Text="Press me"
Background="Transparent"
TextColor="{AppThemeBinding Light=Black, Dark=White}"
ImageSource="{FontImageSource Glyph=MyGlyph, Color={AppThemeBinding Light=Black, Dark=White}, FontFamily=FontAwesome, Size=18}" />
편의를 위해 속성 요소 구문을 사용할 수도 있습니다.
<Button Text="Press me"
Background="Transparent"
TextColor="{AppThemeBinding Light=Black, Dark=White}" >
<Button.ImageSource>
<FontImageSource Glyph="MyGlyph"
Color="{AppThemeBinding Light=Black, Dark=White}"
FontFamily="FontAwesome"
Size="18" />
</Button.ImageSource>
</Button>
자세한 내용은 표시 글꼴 아이콘을 참조하십시오.
Android용 .NET
.NET 10의 Android용 .NET은 API 36 및 JDK 21에 대한 지원을 추가하고 빌드 시간을 줄이고 성능을 향상시키는 작업을 포함합니다. .NET 10의 Android용 .NET에 대한 자세한 내용은 다음 릴리스 정보를 참조하세요.
Android 16 (Baklava) 베타 3 바인딩
구글은 안드로이드 16 (API 36 ) SDK의 베타 3을 발표했다. 여전히 미리 보기로 분류되는 동안 API는 안정적으로 선언되었으며 Google의 Android 16 최종 릴리스는 이번 여름에 예상됩니다.
이제 API 36이 .NET 10의 기본값입니다. 즉, 빌드 속성이 $(TargetFramework)
로 설정되면 net10.0-android
API 36이 사용됩니다.
Visual Studio 및 Visual Studio Code를 .NET 10과 함께 사용할 때, API 36에 대한 인식이 아직 없어서 XA5207 오류를 발생시킬 수 있습니다. 이 문제를 해결하려면 API36 platform.jar을 Android SDK 디렉토리에 수동으로 설치하거나 Visual Studio의 향후 업데이트를 기다려야 합니다.
권장되는 최소 지원 Android API
Android용 .NET 프로젝트 템플릿은 21(롤리팝) 대신 기본 $(SupportedOSPlatformVersion)
24(Nougat)를 지정하도록 업데이트되었습니다. 이렇게 하면 Java 기본 인터페이스 메서드를 사용할 때 "디슈가링" 런타임 크래시가 발생하지 않습니다.
API 21은 .NET 10에서 계속 지원되지만 예기치 않은 런타임 오류를 방지하려면 기존 프로젝트를 API 24로 업데이트하는 것이 좋습니다.
dotnet run
지원
이전에는 사용할 Android 디바이스 또는 에뮬레이터를 지정하는 데 필요한 매개 변수를 허용하지 않았기 때문에 dotnet run
명령은 Android용 .NET 프로젝트에서 지원되지 않았습니다.
.NET 10에서 Android용 .NET 프로젝트는 dotnet run
명령을 사용하여 실행할 수 있습니다.
// Run on the only attached Android physical device
dotnet run -p:AdbTarget=-d
// Run on the only running Android emulator
dotnet run -p:AdbTarget=-e
// Run on the specified Android physical device or emulator
dotnet run -p:AdbTarget="-s emulator-5554"
$(AdbTarget)
속성은 adb
전달됩니다. 자세한 내용은 developer.android.com의 셸 명령을 참조하세요.
기본적으로 활성화된 메서드 마샬링
.NET 9에서는 C# 코드를 호출하는 데 필요한 마샬링 메서드를 만드는 새로운 방법으로 시작 성능이 향상되었습니다. 그러나 .NET 9에서는 기본적으로 꺼져 있습니다.
.NET 10에서는 기본적으로 사용하도록 설정됩니다. 이러한 마샬링 메서드의 문제는 시작 시 시스템이 멈추는 형태로 자주 나타납니다. .NET 9에서 볼 수 없었던 .NET 10 미리 보기에서 시작이 중단되는 경우 프로젝트 파일에서 $(AndroidEnableMarshalMethods)
false
MSBuild 속성을 설정하여 마샬링 메서드를 사용하지 않도록 설정해 보세요.
<PropertyGroup>
<AndroidEnableMarshalMethods>false</AndroidEnableMarshalMethods>
<PropertyGroup>
ArtifactFilename
항목에 대한 @(AndroidMavenLibrary)
메타데이터
@(AndroidMavenLibrary)
.NET 9에 추가되었으며 Java 라이브러리를 Maven에서 자동으로 다운로드하여 바인딩할 수 있습니다. 일반적으로 이 라이브러리의 이름은 {artifact.Id}-{artifact.Version}.[jar|aar]
. 그러나 이것은 표준을 따르지 않으며 임의로 다를 수 있습니다.
.NET 10에서는 ArtifactFilename
MSBuild 항목에 @(AndroidMavenLibrary)
메타데이터를 추가하여 대체 파일 이름을 허용할 수 있습니다.
<ItemGroup>
<AndroidMavenLibrary Include="com.facebook.react:react-android" Version="0.76.0" ArtifactFilename="react-android-0.76.0-release.aar" />
</ItemGroup>
System.IO.Compression은 .apk 생성에 사용됩니다.
과거에 dotnet/android-libzipsharp는 ZIP 파일 아카이브를 처리하고 .aab 및 .apk 파일을 생성하는 데 사용되었습니다.
.NET 10:
- 명령줄
dotnet build
호출의 경우, ZipArchive는 .aab 및 .apk 파일을 생성하는 데 사용됩니다. 이로 인해 빌드 시간이 더 빨라질 것입니다. - Visual Studio 빌드의 경우, dotnet/android-libzipsharp는 .NET Framework 버전을 사용할 수 없기 때문에 여전히 사용됩니다.
Visual Studio 디자인 타임 빌드는 더 이상 aapt2
호출하지 않습니다.
디자인 타임 빌드 속도를 높이기 위해 aapt2
더 이상 호출되지 않습니다. 대신 .aar
파일 및 기본 Android 리소스가 직접 분석됩니다. 이렇게 하면 일부 단위 테스트에 대한 디자인 시간 빌드 시간이 2s 이상에서 600ms 미만으로 줄어듭니다.
JDK 21을 사용하여 빌드
이제 JDK 21을 사용하여 Android용 .NET 프로젝트를 빌드할 수 있습니다.
generator
출력은 잠재적인 System.Reflection.Emit 사용을 방지합니다.
앱 시작 속도와 전반적인 성능은 "C#에서의 Java 호출" 과정에서 System.Reflection.Emit
에 도달할 수 있는 코드 경로를 제거하여 최적화되었습니다.
ApplicationAttribute.ManageSpaceActivity
더 이상 InvalidCastException
을 던지지 않습니다.
ApplicationAttribute.ManageSpaceActivity
속성을 설정해도 .NET 10에서 XAGJS7007 오류가 발생하지 않습니다.
iOS용 .NET
iOS, tvOS, Mac Catalyst 및 macOS의 .NET 10은 다음 플랫폼 버전을 지원합니다.
- iOS: 18.2
- tvOS: 18.2
- Mac Catalyst: 18.2
- macOS: 15.2
iOS, tvOS, Mac Catalyst 및 macOS의 .NET 10에 대한 자세한 내용은 다음 릴리스 정보를 참조하세요.
알려진 문제에 대한 자세한 내용은 .NET 10 알려진 문제참조하세요.
더 많은 구성에서 트리머가 활성화됨
트리머는 이제 다음 구성에서 활성화됩니다.
- iOS 시뮬레이터/arm64 (모든 구성)
- tvOS 시뮬레이터/arm64 (모든 구성)
- Mac Catalyst/arm64 (모든 구성)
트리머 경고는 기본적으로 사용하도록 설정됩니다.
기본 클래스 라이브러리가 트리머 경고를 생성하여 모든 경고를 수정할 수 없었기 때문에, 트리머 경고는 이전에 숨겨졌습니다. 그러나 .NET 9에서는 모든 iOS 트리머 경고가 수정되었으므로 이제 트리머 경고가 기본적으로 사용하도록 설정됩니다. 트리머 경고를 사용하지 않도록 설정하려면 프로젝트 파일에서 $(SuppressTrimAnalysisWarnings)
MSBuild 속성을 true
설정합니다.
<PropertyGroup>
<SuppressTrimAnalysisWarnings>true</SuppressTrimAnalysisWarnings>
</PropertyGroup>
라이브러리에서 원래 리소스 번들링
라이브러리 프로젝트에는 스토리보드, xibs, 속성 목록, 이미지, CoreML 모델 및 텍스처 아틀라스와 같은 다양한 유형의 번들 리소스가 있을 수 있으며 포함된 리소스로 컴파일된 라이브러리에 번들로 제공됩니다.
스토리보드 또는 xibs 컴파일 또는 속성 목록 및 이미지 최적화와 같은 이러한 리소스 처리는 포함하기 전에 수행되지만 처리로 인해 라이브러리 빌드가 복잡해집니다.
- 스토리보드/xibs 컴파일은 Mac에서만 수행할 수 있으므로 Mac에서 실행해야 합니다.
- 애플의 도구 체인이 필요합니다.
- 앱을 빌드할 때 원래 리소스에 따라 의사 결정을 수행하는 것은 불가능합니다.
따라서 라이브러리에 원래 리소스를 포함하기 위한 옵트인 지원이 .NET 9에 추가되었으며 이제 .NET 10에서 옵트아웃됩니다. 이 동작을 옵트아웃하려면 프로젝트 파일에서 $(BundleOriginalResources)
MSBuild 속성을 false
설정합니다.
<PropertyGroup>
<BundleOriginalResources>false</BundleOriginalResources>
</PropertyGroup>
Windows에서 바인딩 프로젝트 빌드하기
Windows에서 이제 바인딩 프로젝트를 완전히 구축하여 원격 Mac이 필요하지 않습니다. Windows에서 바인딩 프로젝트를 구축하는 속도가 상당히 빨라집니다.
NSUrlSessionHandler는 더 이상 세션의 TLS 지원 프로토콜 최소 버전을 설정하지 않습니다.
이전에 NSUrlSessionHandler는 NSUrlSessionConfiguration.TLSMinimumSupportedProtocol 속성에서 ServicePointManager.SecurityProtocol 값을 초기화했지만, 지금은 ServicePointManager 클래스가 더 이상 사용되지 않습니다. 따라서 NSUrlSessionConfiguration.TLSMinimumSupportedProtocol 값을 설정한 후에 NSUrlSessionHandler를 생성해야 합니다.
var sessionConfiguration = NSUrlSessionConfiguration.DefaultSessionConfiguration;
sessionConfiguration.TlsMinimumSupportedProtocolVersion = TlsProtocolVersion.Tls13;
var handler = new NSUrlSessionHandler(sessionConfiguration);
NSUrlSessionHandler.BypassBackgroundSessionCheck 속성은 무시됩니다.
Mono 런타임의 오래된 문제를 해결하기 위해 NSUrlSessionHandler.BypassBackgroundSessionCheck
속성이 존재합니다. 이 해결 방법은 더 이상 필요하지 않으므로 해당 속성은 무시됩니다.
참고하십시오
.NET MAUI