Migração do projeto de vinculação do Xamarin.iOS
Para migrar uma Biblioteca de Associação do Xamarin.iOS para uma Biblioteca de Associação do .NET para iOS:
No Visual Studio, crie um projeto de Biblioteca de Associação do iOS com o mesmo nome do seu projeto de associação do Xamarin.iOS:
Abra o arquivo de projeto para confirmar que você tem um projeto no estilo do SDK do .NET:
<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>
Observação
O arquivo de projeto de uma Biblioteca de Associação do iOS é semelhante ao arquivo de projeto de uma biblioteca de classes do iOS.
Adicione sua biblioteca nativa, ou estrutura nativa, ao projeto como uma referência nativa. Em seguida, atualize o arquivo de projeto de associação com o item
<NativeReference>
de seu projeto de associação do Xamarin.iOS:<ItemGroup> <NativeReference Include="libXMBindingLibraryUniversal.a"> <Kind>Static</Kind> <ForceLoad>True</ForceLoad> </NativeReference> </ItemGroup>
Copie a definição de API de seu projeto de associação do Xamarin.iOS para seu projeto de associação do .NET para iOS.
Copie qualquer código adicional necessário do seu projeto de associação do Xamarin.iOS para seu projeto de associação do .NET para iOS.
Em seu projeto de associação do .NET para iOS, substitua todas as APIs sem suporte por seus equivalentes do .NET para iOS. Para obter mais informações, consulte APIs sem suporte.
APIs sem suporte
As seguintes APIs do Xamarin.iOS foram alteradas.
System.nint e System.nunit
Os tipos System.nint
e System.nuint
não estão disponíveis no .NET para iOS. Em vez disso, eles foram substituídos pelos tipos nint
e nuint
, que mapeiam para System.IntPtr
e System.UIntPtr
, respectivamente. O código que usa os tipos System.nint
e System.nuint
não será compilado e deverá ser substituído pelos tipos nint
e nuint
. Além disso, o código que sobrecarrega System.IntPtr
e nint
, e System.UIntPtr
e nuint
não será compilado. Nesse cenário, renomeie ou remova uma das sobrecargas.
System.nfloat
O tipo System.nfloat
não está disponível no .NET para iOS. Em vez disso, ele será substituído pelo tipo System.Runtime.InteropServices.NFloat
. Modifique qualquer código que se refira a System.nfloat
para usar nfloat
ou o nome do tipo totalmente qualificado.
Alteração do tipo NSObject.Handle
No .NET para iOS, as propriedades NSObject.Handle
e INativeObject.Handle
alteraram o tipo, passando de System.IntPtr
para um struct ObjCRuntime.NativeHandle
. Isso significa que muitos parâmetros e valores de retorno precisarão alterar o tipo. Por exemplo:
- Todos os objetos herdados de
Foundation.NSObject
que tenham propriedadesClassHandle
ouHandle
do tipoIntPtr
devem alterar o tipo de propriedade paraObjCRuntime.NativeHandle
. - Todos os objetos que herdam de
Foundation.NSObject
ouObjCRuntime.DisposableObject
e que têm construtores que anteriormente usavamSystem.IntPtr
, ouSystem.IntPtr
ebool
, devem alterar as referências deIntPtr
paraObjcRuntime.NativeHandle
.
Há conversões implícitas entre System.IntPtr
e ObjCRuntime.NativeHandler
, portanto, depois de fazer essa alteração de tipo, a maior parte do código deverá ser compilada sem outras alterações.
Model.AutoGeneratedName
A propriedade Model.AutoGeneratedName
não está disponível no .NET para iOS. No Xamarin.iOS, essa propriedade especificava se o nome do tipo Objective-C para o modelo deveria ser gerado automaticamente. No .NET para iOS, a geração automática do nome do tipo Objective-C a partir do modelo é o padrão e o único comportamento disponível.
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de