Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Para migrar uma biblioteca de binding Xamarin.iOS para uma biblioteca de binding .NET para iOS:
No Visual Studio, crie um novo projeto de Binding Library para iOS com o mesmo nome do seu projeto de binding Xamarin.iOS:
Abra o ficheiro do projeto para confirmar que tem um projeto ao estilo SDK .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 para uma biblioteca de vinculação iOS é semelhante ao arquivo de projeto para uma biblioteca de classes iOS.
Adicione a sua biblioteca nativa, ou framework nativo, ao projeto como referência nativa. Depois atualize o ficheiro do projeto de binding com o item
<NativeReference>do seu projeto de binding Xamarin.iOS.<ItemGroup> <NativeReference Include="libXMBindingLibraryUniversal.a"> <Kind>Static</Kind> <ForceLoad>True</ForceLoad> </NativeReference> </ItemGroup>Copie a definição da API do seu projeto de ligação Xamarin.iOS para o seu projeto de ligação .NET para iOS.
Copie qualquer código adicional necessário do seu projeto de binding Xamarin.iOS para o seu projeto de binding .NET for iOS.
No seu projeto de ligação .NET para iOS, substitua quaisquer APIs não suportadas pelos equivalentes .NET para iOS. Para mais informações, consulte APIs Não Suportadas.
APIs não suportadas
As seguintes APIs do Xamarin.iOS mudaram.
System.nint e System.nunit
Os tipos System.nint e System.nuint não estão disponíveis em .NET para iOS. Em vez disso, são substituídos pelos tipos nint e nuint, que correspondem respetivamente a System.IntPtr e System.UIntPtr. O código que usa os System.nint tipos e System.nuint não compila e deve ser substituído pelos nint tipos e nuint . Além disso, código que cause sobrecarga com System.IntPtr e nint, e System.UIntPtr e nuint não compila. Neste cenário, renomeia ou remove uma das sobrecargas.
System.nfloat
O System.nfloat tipo não está disponível em .NET para iOS. Em vez disso, é substituído pelo tipo System.Runtime.InteropServices.NFloat. Modificar qualquer código que se refira ao System.nfloat para usar nfloat ou ao nome do tipo totalmente qualificado.
NSObject.Mudança de tipo de identificador
No .NET para iOS, as propriedades NSObject.Handle e INativeObject.Handle mudaram de tipo de System.IntPtr para uma struct ObjCRuntime.NativeHandle. Isto significa que muitos parâmetros e valores de retorno terão de mudar de tipo. Por exemplo:
- Todos os objetos que herdam de
Foundation.NSObjectque têmClassHandleouHandlepropriedades do tipoIntPtrdevem mudar o seu tipo de propriedade paraObjCRuntime.NativeHandle. - Todos os objetos que herdam de
Foundation.NSObjectouObjCRuntime.DisposableObjectque têm construtores que anteriormente tomaram aSystem.IntPtr, ou aSystem.IntPtre abool, devem alterar asIntPtrreferências paraObjcRuntime.NativeHandle.
Existem conversões implícitas entre System.IntPtr e ObjCRuntime.NativeHandler, por isso, após esta alteração de tipo, a maior parte do código deve compilar sem alterações adicionais.
Model.AutoGeneratedName
A Model.AutoGeneratedName propriedade não está disponível em .NET para iOS. No Xamarin.iOS, esta propriedade especificava se o nome do tipo de Objective-C para o modelo deveria ser gerado automaticamente. No .NET para iOS, gerar automaticamente o nome do tipo de Objective-C a partir do modelo é o comportamento padrão e único disponível.