Xamarin.iOS 바인딩 프로젝트 마이그레이션
Xamarin.iOS 바인딩 라이브러리를 iOS용 .NET 바인딩 라이브러리로 마이그레이션하려면 다음을 수행합니다.
Visual Studio에서 Xamarin.iOS 바인딩 프로젝트와 동일한 이름으로 새 iOS 바인딩 라이브러리 프로젝트를 만듭니다.
프로젝트 파일을 열어 .NET SDK 스타일 프로젝트가 있는지 확인합니다.
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net8.0-ios</TargetFramework> <Nullable>enable</Nullable> <ImplicitUsings>true</ImplicitUsings> <IsBindingProject>true</IsBindingProject> </PropertyGroup> <ItemGroup> <ObjcBindingApiDefinition Include="ApiDefinition.cs" /> <ObjcBindingCoreSource Include="StructsAndEnums.cs" /> </ItemGroup> </Project>
참고 항목
iOS 바인딩 라이브러리의 프로젝트 파일은 iOS 클래스 라이브러리의 프로젝트 파일과 비슷합니다.
네이티브 라이브러리 또는 네이티브 프레임워크를 네이티브 참조로 프로젝트에 추가합니다. 그런 다음, 바인딩 프로젝트 파일을 Xamarin.iOS 바인딩 프로젝트의 항목으로
<NativeReference>
업데이트합니다.<ItemGroup> <NativeReference Include="libXMBindingLibraryUniversal.a"> <Kind>Static</Kind> <ForceLoad>True</ForceLoad> </NativeReference> </ItemGroup>
Xamarin.iOS 바인딩 프로젝트에서 iOS용 .NET 바인딩 프로젝트로 API 정의를 복사합니다.
Xamarin.iOS 바인딩 프로젝트에서 필요한 추가 코드를 iOS 바인딩 프로젝트용 .NET에 복사합니다.
iOS용 .NET 바인딩 프로젝트에서 지원되지 않는 모든 API를 iOS용 .NET으로 대체합니다. 자세한 내용은 지원되지 않는 API를 참조 하세요.
지원되지 않는 API
다음 Xamarin.iOS API가 변경되었습니다.
System.nint 및 System.nunit
System.nint
iOS용 .NET에서는 형식을 System.nuint
사용할 수 없습니다. 대신 각각 매핑되는 형식 및 nuint
형식으로 System.UIntPtr
nint
System.IntPtr
대체됩니다. 및 형식을 System.nint
사용하는 코드는 컴파일되지 않으며 형식과 nuint
형식으로 nint
바꿔야 System.nuint
합니다. 또한 오버로드 System.IntPtr
되고 nint
System.UIntPtr
nuint
컴파일되지 않는 코드도 있습니다. 이 시나리오에서는 오버로드 중 하나의 이름을 바꾸거나 제거합니다.
System.nfloat
System.nfloat
iOS용 .NET에서는 이 형식을 사용할 수 없습니다. 대신 형식으로 대체됩니다 System.Runtime.InteropServices.NFloat
. 사용할 nfloat
코드나 정규화된 형식 이름을 수정합니다System.nfloat
.
NSObject.Handle 형식 변경
iOS NSObject.Handle
용 .NET에서 속성 형식 INativeObject.Handle
이 구조체로 ObjCRuntime.NativeHandle
변경되었습니다System.IntPtr
. 즉, 많은 매개 변수와 반환 값이 형식을 변경해야 합니다. 예시:
- 해당 개체 또는
Handle
형식의 속성에서Foundation.NSObject
상속되는ClassHandle
모든 개체는 해당 속성 형식을 .로ObjCRuntime.NativeHandle
변경해야IntPtr
합니다. - 이전에 또는 a
System.IntPtr
및bool
a를 가져온System.IntPtr
생성자에서Foundation.NSObject
상속되거나ObjCRuntime.DisposableObject
생성자가 있는 모든 개체는 참조를IntPtr
ObjcRuntime.NativeHandle
변경해야 합니다.
간 암시적 변환이 있으므로 이 형식을 System.IntPtr
ObjCRuntime.NativeHandler
변경한 후 대부분의 코드는 추가 변경 없이 컴파일해야 합니다.
Model.AutoGeneratedName
iOS용 .NET에서는 이 Model.AutoGeneratedName
속성을 사용할 수 없습니다. Xamarin.iOS에서 이 속성은 모델의 Objective-C 형식 이름을 자동으로 생성할지 여부를 지정했습니다. iOS용 .NET에서 모델에서 Objective-C 형식 이름을 자동으로 생성하는 것은 사용할 수 있는 기본 및 유일한 동작입니다.
.NET MAUI