The `MicroBuildCodesignVerify@3` task has been added to validate the
signing status of the MSI files required for VS insertions. This will
allow us to identify any potential signing issues earlier.
Add prIssueManagement.yml to onboard repo to GitOps.ResourceManagement
as FabricBot replacement
Owners of the FabricBot configuration should have received email
notification. The same information contained in the email is published
internally at: https://aka.ms/gim/fabricbot. Details on the replacement
service and the syntax of the new yaml configuration file is available
publicly at: https://microsoft.github.io/GitOps/policies/resource-management.html
This commit fixes the code that was added in
https://github.com/xamarin/xamarin-macios/pull/16361.
The previous change uses the version number that is part of the config
file in the current build machine. That is correct when we are working
when we are running the tests in the same machine that built them. That
IS NOT THE CASE when building on CI.
Back when the CI did the separation to accommodate the EO we noticed
that if the workload is built in a diff machine, the versions were not
to be trusted, that is why the CI sets and enviroment variable to track
the version that was built in the original step. This change check if we
are on the CI, if we are we trust the version given by the previos
machine, else we use the config one.
This is the pull request automatically created by the OneLocBuild task
in the build process to check-in localized files generated based upon
translation source files (.lcl files) handed-back from the downstream
localization pipeline. If there are issues in translations, visit
https://aka.ms/icxLocBug and log bugs for fixes. The OneLocBuild wiki is
https://aka.ms/onelocbuild and the localization process in general is
documented at https://aka.ms/AllAboutLoc.
This pull request updates the following dependencies
[marker]: <> (Begin:Coherency Updates)
## Coherency Updates
The following updates ensure that dependencies with a
*CoherentParentDependency*
attribute were produced in a build used as input to the parent
dependency's build.
See [Dependency Description
Format](https://github.com/dotnet/arcade/blob/master/Documentation/DependencyDescriptionFormat.md#dependency-description-overview)
[DependencyUpdate]: <> (Begin)
- **Coherency Updates**:
- **Microsoft.NET.ILLink.Tasks**: from 8.0.0-rc.1.23375.3 to
8.0.0-rc.1.23376.5 (parent: Microsoft.Dotnet.Sdk.Internal)
- **Microsoft.AspNetCore.App.Ref**: from 8.0.0-rc.1.23375.2 to
8.0.0-rc.1.23376.5 (parent: Microsoft.Dotnet.Sdk.Internal)
- **Microsoft.NETCore.App.Ref**: from 8.0.0-rc.1.23375.3 to
8.0.0-rc.1.23376.5 (parent: Microsoft.Dotnet.Sdk.Internal)
- **Microsoft.NETCore.App.Ref**: from 8.0.0-rc.1.23375.3 to
8.0.0-rc.1.23376.5 (parent: Microsoft.Dotnet.Sdk.Internal)
[DependencyUpdate]: <> (End)
[marker]: <> (End:Coherency Updates)
[marker]: <> (Begin:f9b68d84-9c90-4bd0-5499-08db4112d57e)
## From https://github.com/dotnet/installer
- **Subscription**: f9b68d84-9c90-4bd0-5499-08db4112d57e
- **Build**: 20230727.5
- **Date Produced**: July 28, 2023 12:24:33 AM UTC
- **Commit**: 0759df6ebb8c02d185fe45adfa58069ac97ebdee
- **Branch**: refs/heads/main
[DependencyUpdate]: <> (Begin)
- **Updates**:
- **Microsoft.Dotnet.Sdk.Internal**: [from 8.0.100-rc.1.23375.11 to
8.0.100-rc.1.23377.5][1]
- **Microsoft.NET.ILLink.Tasks**: [from 8.0.0-rc.1.23375.3 to
8.0.0-rc.1.23376.5][2]
- **Microsoft.AspNetCore.App.Ref**: [from 8.0.0-rc.1.23375.2 to
8.0.0-rc.1.23376.5][3]
- **Microsoft.NETCore.App.Ref**: [from 8.0.0-rc.1.23375.3 to
8.0.0-rc.1.23376.5][2]
- **Microsoft.NETCore.App.Ref**: [from 8.0.0-rc.1.23375.3 to
8.0.0-rc.1.23376.5][2]
[1]: f07981240e...0759df6ebb
[2]: 3dd73e6d53...ea97babd7c
[3]:
f2d2ba09c6...40dc1466a4
[DependencyUpdate]: <> (End)
[marker]: <> (End:f9b68d84-9c90-4bd0-5499-08db4112d57e)
---------
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: GitHub Actions <github-actions@xamarin.com>
This commit fixes the code that was added in
https://github.com/xamarin/xamarin-macios/pull/16361.
The previous change uses the version number that is part of the config
file in the current build machine. That is correct when we are working
when we are running the tests in the same machine that built them. That
IS NOT THE CASE when building on CI.
Back when the CI did the separation to accommodate the EO we noticed
that if the workload is built in a diff machine, the versions were not
to be trusted, that is why the CI sets and enviroment variable to track
the version that was built in the original step. This change check if we
are on the CI, if we are we trust the version given by the previos
machine, else we use the config one.
. the Build Agent and remote tasks
DOTNET_ROOT and DOTNET_HOST_PATH are being deprecated as a mechanism to
store the location of dotnet. PATH will be used instead, so we should
ensure that the existing code that makes usage of these variables is
adapted to the new guidelines. More information:
f454d6960ehttps://github.com/dotnet/runtime/issues/88754#issuecomment-1632957579
Additionally, to avoid confusion, we are using a dedicate
DOTNET_CUSTOM_PATH variable with the path of the dotnet used by the XMA
Build Agent, so it can be used internally by the tasks without mixing it
with the existing dotnet variables
Backport of #18567
---------
Co-authored-by: Mauro Agnoletti <mauro.agnoletti@gmail.com>
Co-authored-by: GitHub Actions Autoformatter <github-actions-autoformatter@xamarin.com>
… the Build Agent and remote tasks
DOTNET_ROOT and DOTNET_HOST_PATH are being deprecated as a mechanism to
store the location of dotnet. PATH will be used instead, so we should
ensure that the existing code that makes usage of these variables is
adapted to the new guidelines. More information:
f454d6960ehttps://github.com/dotnet/runtime/issues/88754#issuecomment-1632957579
Additionally, to avoid confusion, we are using a dedicate
DOTNET_CUSTOM_PATH variable with the path of the dotnet used by the XMA
Build Agent, so it can be used internally by the tasks without mixing it
with the existing dotnet variables
---------
Co-authored-by: GitHub Actions Autoformatter <github-actions-autoformatter@xamarin.com>
This pull request updates the following dependencies
[marker]: <> (Begin:Coherency Updates)
## Coherency Updates
The following updates ensure that dependencies with a
*CoherentParentDependency*
attribute were produced in a build used as input to the parent
dependency's build.
See [Dependency Description
Format](https://github.com/dotnet/arcade/blob/master/Documentation/DependencyDescriptionFormat.md#dependency-description-overview)
[DependencyUpdate]: <> (Begin)
- **Coherency Updates**:
- **Microsoft.NET.ILLink.Tasks**: from 8.0.0-preview.7.23359.1 to
8.0.0-rc.1.23374.9 (parent: Microsoft.Dotnet.Sdk.Internal)
- **Microsoft.AspNetCore.App.Ref**: from 8.0.0-preview.7.23359.2 to
8.0.0-rc.1.23374.14 (parent: Microsoft.Dotnet.Sdk.Internal)
- **Microsoft.NETCore.App.Ref**: from 8.0.0-preview.7.23359.1 to
8.0.0-rc.1.23374.9 (parent: Microsoft.Dotnet.Sdk.Internal)
-
**Microsoft.NET.Workload.Emscripten.Current.Manifest-8.0.100.Transport**:
from 8.0.0-preview.7.23326.1 to 8.0.0-rc.1.23368.3 (parent:
Microsoft.NETCore.App.Ref)
- **Microsoft.NETCore.App.Ref**: from 8.0.0-preview.7.23359.1 to
8.0.0-rc.1.23374.9 (parent: Microsoft.Dotnet.Sdk.Internal)
- **Microsoft.DotNet.Cecil**: from 0.11.4-alpha.23327.1 to
0.11.4-alpha.23360.2 (parent: Microsoft.NETCore.App.Ref)
[DependencyUpdate]: <> (End)
[marker]: <> (End:Coherency Updates)
[marker]: <> (Begin:f9b68d84-9c90-4bd0-5499-08db4112d57e)
## From https://github.com/dotnet/installer
- **Subscription**: f9b68d84-9c90-4bd0-5499-08db4112d57e
- **Build**: 20230725.3
- **Date Produced**: July 25, 2023 10:39:06 AM UTC
- **Commit**: e1872958afdb2b42b48f213efc8a6cd509816f0c
- **Branch**: refs/heads/main
[DependencyUpdate]: <> (Begin)
- **Updates**:
- **Microsoft.Dotnet.Sdk.Internal**: [from 8.0.100-preview.7.23360.1 to
8.0.100-rc.1.23375.3][60]
- **Microsoft.NET.ILLink.Tasks**: [from 8.0.0-preview.7.23359.1 to
8.0.0-rc.1.23374.9][61]
- **Microsoft.AspNetCore.App.Ref**: [from 8.0.0-preview.7.23359.2 to
8.0.0-rc.1.23374.14][62]
- **Microsoft.NETCore.App.Ref**: [from 8.0.0-preview.7.23359.1 to
8.0.0-rc.1.23374.9][61]
-
**Microsoft.NET.Workload.Emscripten.Current.Manifest-8.0.100.Transport**:
[from 8.0.0-preview.7.23326.1 to 8.0.0-rc.1.23368.3][63]
- **Microsoft.NETCore.App.Ref**: [from 8.0.0-preview.7.23359.1 to
8.0.0-rc.1.23374.9][61]
- **Microsoft.DotNet.Cecil**: [from 0.11.4-alpha.23327.1 to
0.11.4-alpha.23360.2][64]
[60]:
62ef57f114...e1872958af
[61]: 31106939ba...119667b5ef
[62]:
be566b1f4e...1bda10b33b
[63]: 60a73f97a0...1f68fcee45
[64]: 3e46711f5a...1a6a83a8f5
[DependencyUpdate]: <> (End)
[marker]: <> (End:f9b68d84-9c90-4bd0-5499-08db4112d57e)
---------
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: GitHub Actions <github-actions@xamarin.com>
Co-authored-by: Alex Soto <alex@alexsoto.me>
Co-authored-by: Alex Soto <alex@soto.dev>
Co-authored-by: Filip Navara <navara@emclient.com>
Context: https://github.com/xamarin/yaml-templates/pull/274
Enables side by side workload manifest support when generating workload
MSIs.
This should only be enabled for builds shipping with .NET 8 Preview 7 or
later.
Co-authored-by: Alex Soto <alex@alexsoto.me>
… supporting XPC on File Provider instance
File Provider Service can act as an standalone XPC that you can
establish the connection with.
To open up the capability this new signature has to be exposed
---------
Co-authored-by: GitHub Actions Autoformatter <github-actions-autoformatter@xamarin.com>
Co-authored-by: Alex Soto <alex@alexsoto.me>
Prior to changing to the new PAT to help with the automatization, we had
these lcl files waiting to be brought over. It's not clear if the new
PAT is fully working - we will need to wait until more translation codes
are added.
In the current setup with NativeAOT, during app build we run both ILLink
and ILCompiler in cascade.
When `_AggressiveAttributeTrimming` feature switch is set to `true`
ILLink removes `IsTrimmable` attribute from assemblies, which means that
when we are also running in `TrimMode=partial` (which translates to
`--defaultrooting` ILC command-line arguments) ILC trimming is disabled
completely.
This PR disables `_AggressiveAttributeTrimming` in the first pass ie
during trimming by ILLink and enables it in the second trimming pass
performed by ILCompiler.
Additionally, to workaround ILCompiler incompatibility with
`Microsoft.iOS` (and friends) this platform assembly is explicitly
rooted when passed to ILCompiler for trimming (this will be fixed once
https://github.com/dotnet/runtime/issues/86649 is resolved).
Estimated savings: This change reduces the size of the application
bundle by `0,58Mb` (or ~4,3% compared to the baseline)
| MAUI ios app | Base | This PR | diff (%) |
|--------------|-----------|-----------|----------|
| SOD (Mb) | 41,93 | 40,5 | -3,4% |
| .ipa (Mb) | 13,43 | 12,85 | -4,3% |
Fixes: https://github.com/xamarin/xamarin-macios/issues/18479
---------
Co-authored-by: Alex Soto <alex@alexsoto.me>
This PR disables passing `-dead_strip` to the native linker in case of
NativeAOT runtime to prevent build failures.
Additionally, this change affects the size of the application in the
following way - measured with `dotnet new maui` app version
`8.0.0-preview.7.23359.1`:
| MAUI iOS | -dead_strip | no -dead_strip | diff (b) | diff (Kb) | diff
(%) |
|----------|--------------|----------|----------|-----------|----------|
| .ipa (b) | 13377583 | 13435276 | 57693 | 57,693 | 0,43% |
| Size on disk (b) | 41883897 | 42038873 | 154976 | 154,976 | 0,37% |
| binary (b) | 39614336 | 39769312 | 154976 | 154,976 | 0,39% |
Even though the size of the application regresses, with this change we
have a more stable product.
Finally, once this PR gets merged we can open a tracking issue to solve
the size regression either by fixing:
- https://github.com/dotnet/runtime/issues/88032 or
- by manually removing the dead code as proposed by @filipnavara here:
https://github.com/dotnet/runtime/issues/88032#issuecomment-1624303167
---
Fixes: https://github.com/xamarin/xamarin-macios/issues/18552
This pull request updates the following dependencies
[marker]: <> (Begin:Coherency Updates)
## Coherency Updates
The following updates ensure that dependencies with a
*CoherentParentDependency*
attribute were produced in a build used as input to the parent
dependency's build.
See [Dependency Description
Format](https://github.com/dotnet/arcade/blob/master/Documentation/DependencyDescriptionFormat.md#dependency-description-overview)
[DependencyUpdate]: <> (Begin)
- **Coherency Updates**:
- **Microsoft.NET.ILLink.Tasks**: from 8.0.0-preview.7.23328.9 to
8.0.0-preview.7.23359.1 (parent: Microsoft.Dotnet.Sdk.Internal)
- **Microsoft.AspNetCore.App.Ref**: from 8.0.0-preview.7.23328.3 to
8.0.0-preview.7.23359.2 (parent: Microsoft.Dotnet.Sdk.Internal)
- **Microsoft.NETCore.App.Ref**: from 8.0.0-preview.7.23328.9 to
8.0.0-preview.7.23359.1 (parent: Microsoft.Dotnet.Sdk.Internal)
- **Microsoft.NETCore.App.Ref**: from 8.0.0-preview.7.23328.9 to
8.0.0-preview.7.23359.1 (parent: Microsoft.Dotnet.Sdk.Internal)
[DependencyUpdate]: <> (End)
[marker]: <> (End:Coherency Updates)
[marker]: <> (Begin:f9b68d84-9c90-4bd0-5499-08db4112d57e)
## From https://github.com/dotnet/installer
- **Subscription**: f9b68d84-9c90-4bd0-5499-08db4112d57e
- **Build**: 20230710.1
- **Date Produced**: July 10, 2023 9:47:19 AM UTC
- **Commit**: 62ef57f1140e7fa71cf452542b263e7999cac168
- **Branch**: refs/heads/main
[DependencyUpdate]: <> (Begin)
- **Updates**:
- **Microsoft.Dotnet.Sdk.Internal**: [from 8.0.100-preview.7.23329.2 to
8.0.100-preview.7.23360.1][31]
- **Microsoft.NET.ILLink.Tasks**: [from 8.0.0-preview.7.23328.9 to
8.0.0-preview.7.23359.1][32]
- **Microsoft.AspNetCore.App.Ref**: [from 8.0.0-preview.7.23328.3 to
8.0.0-preview.7.23359.2][33]
- **Microsoft.NETCore.App.Ref**: [from 8.0.0-preview.7.23328.9 to
8.0.0-preview.7.23359.1][32]
- **Microsoft.NETCore.App.Ref**: [from 8.0.0-preview.7.23328.9 to
8.0.0-preview.7.23359.1][32]
[31]:
12bfecc01d...62ef57f114
[32]: cfae69f624...31106939ba
[33]:
c7b4724a7d...be566b1f4e
[DependencyUpdate]: <> (End)
[marker]: <> (End:f9b68d84-9c90-4bd0-5499-08db4112d57e)
---------
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: GitHub Actions <github-actions@xamarin.com>
Since NativeAOT generates native libraries and executables that do not
rely on assemblies they were compiled from, all managed assemblies can
be excluded from the application bundle.
This reduces the size of the application bundle by `3,17Mb` (or ~19%
compared to the baseline)
| MAUI ios app | Base | This PR | diff (%) |
|--------------|-----------|-----------|----------|
| SOD (Mb) | 50,13 | 41,93 | -16,3% |
| .ipa (Mb) | 16,59 | 13,43 | -19% |
Fixes: https://github.com/xamarin/xamarin-macios/issues/18472
This pull request updates the following dependencies
## Coherency Updates
The following updates ensure that dependencies with a *CoherentParentDependency*
attribute were produced in a build used as input to the parent dependency's build.
See [Dependency Description Format](https://github.com/dotnet/arcade/blob/master/Documentation/DependencyDescriptionFormat.md#dependency-description-overview)
- **Coherency Updates**:
- **Microsoft.NET.ILLink.Tasks**: from 8.0.0-preview.7.23326.5 to 8.0.0-preview.7.23328.9 (parent: Microsoft.Dotnet.Sdk.Internal)
- **Microsoft.AspNetCore.App.Ref**: from 8.0.0-preview.7.23327.19 to 8.0.0-preview.7.23328.3 (parent: Microsoft.Dotnet.Sdk.Internal)
- **Microsoft.NETCore.App.Ref**: from 8.0.0-preview.7.23326.5 to 8.0.0-preview.7.23328.9 (parent: Microsoft.Dotnet.Sdk.Internal)
- **Microsoft.NET.Workload.Emscripten.Current.Manifest-8.0.100.Transport**: from 8.0.0-preview.7.23321.3 to 8.0.0-preview.7.23326.1 (parent: Microsoft.NETCore.App.Ref)
- **Microsoft.NETCore.App.Ref**: from 8.0.0-preview.7.23326.5 to 8.0.0-preview.7.23328.9 (parent: Microsoft.Dotnet.Sdk.Internal)
- **Microsoft.DotNet.Cecil**: from 0.11.4-alpha.23319.2 to 0.11.4-alpha.23327.1 (parent: Microsoft.NETCore.App.Ref)
## From https://github.com/dotnet/installer
- **Subscription**: f9b68d84-9c90-4bd0-5499-08db4112d57e
- **Build**: 20230629.2
- **Date Produced**: June 29, 2023 11:33:10 AM UTC
- **Commit**: 12bfecc01dfa05c84102893928ddc3840f97bb70
- **Branch**: refs/heads/main
- **Updates**:
- **Microsoft.Dotnet.Sdk.Internal**: [from 8.0.100-preview.7.23328.2 to 8.0.100-preview.7.23329.2][1]
- **Microsoft.NET.ILLink.Tasks**: [from 8.0.0-preview.7.23326.5 to 8.0.0-preview.7.23328.9][2]
- **Microsoft.AspNetCore.App.Ref**: [from 8.0.0-preview.7.23327.19 to 8.0.0-preview.7.23328.3][3]
- **Microsoft.NETCore.App.Ref**: [from 8.0.0-preview.7.23326.5 to 8.0.0-preview.7.23328.9][2]
- **Microsoft.NET.Workload.Emscripten.Current.Manifest-8.0.100.Transport**: [from 8.0.0-preview.7.23321.3 to 8.0.0-preview.7.23326.1][4]
- **Microsoft.NETCore.App.Ref**: [from 8.0.0-preview.7.23326.5 to 8.0.0-preview.7.23328.9][2]
- **Microsoft.DotNet.Cecil**: [from 0.11.4-alpha.23319.2 to 0.11.4-alpha.23327.1][5]
[1]: f6fa6a301f...12bfecc01d
[2]: f0b4bb9c62...cfae69f624
[3]: fca06e70ae...c7b4724a7d
[4]: e004a85d84...60a73f97a0
[5]: f449dc9923...3e46711f5a
Detect if a url we use in our tests actually works, and if not, save the
results and ignore any subsequent test that tries to use that url.
---------
Co-authored-by: Haritha Mohan <harithamohan@microsoft.com>
This pull request updates the following dependencies
## Coherency Updates
The following updates ensure that dependencies with a *CoherentParentDependency*
attribute were produced in a build used as input to the parent dependency's build.
See [Dependency Description Format](https://github.com/dotnet/arcade/blob/master/Documentation/DependencyDescriptionFormat.md#dependency-description-overview)
- **Coherency Updates**:
- **Microsoft.NET.ILLink.Tasks**: from 8.0.0-preview.7.23325.2 to 8.0.0-preview.7.23326.5 (parent: Microsoft.Dotnet.Sdk.Internal)
- **Microsoft.AspNetCore.App.Ref**: from 8.0.0-preview.7.23325.4 to 8.0.0-preview.7.23327.19 (parent: Microsoft.Dotnet.Sdk.Internal)
- **Microsoft.NETCore.App.Ref**: from 8.0.0-preview.7.23325.2 to 8.0.0-preview.7.23326.5 (parent: Microsoft.Dotnet.Sdk.Internal)
- **Microsoft.NETCore.App.Ref**: from 8.0.0-preview.7.23325.2 to 8.0.0-preview.7.23326.5 (parent: Microsoft.Dotnet.Sdk.Internal)
## From https://github.com/dotnet/installer
- **Subscription**: f9b68d84-9c90-4bd0-5499-08db4112d57e
- **Build**: 20230628.2
- **Date Produced**: June 28, 2023 10:48:59 AM UTC
- **Commit**: f6fa6a301f0e090d9a4dbebf0127a845bcd825f4
- **Branch**: refs/heads/main
- **Updates**:
- **Microsoft.Dotnet.Sdk.Internal**: [from 8.0.100-preview.7.23326.3 to 8.0.100-preview.7.23328.2][1]
- **Microsoft.NET.ILLink.Tasks**: [from 8.0.0-preview.7.23325.2 to 8.0.0-preview.7.23326.5][2]
- **Microsoft.AspNetCore.App.Ref**: [from 8.0.0-preview.7.23325.4 to 8.0.0-preview.7.23327.19][3]
- **Microsoft.NETCore.App.Ref**: [from 8.0.0-preview.7.23325.2 to 8.0.0-preview.7.23326.5][2]
- **Microsoft.NETCore.App.Ref**: [from 8.0.0-preview.7.23325.2 to 8.0.0-preview.7.23326.5][2]
[1]: fe40884b18...f6fa6a301f
[2]: eaa9717d90...f0b4bb9c62
[3]: b640052a0a...fca06e70ae
Closes#18356
In the static UnmanagedCallersOnly methods we don't know the generic
parameters of the type we're working with and we need to use this trick
to be able to call methods on the generic type without using reflection.
When we call a non-generic interface method implemented on a generic
class, the .NET runtime will resolve the generic parameters for us. In
the implementation of the interface method, we can simply use the
generic parameters and generate the same code we usually generate in the
UnmanagedCallersOnly callback method.
This is an example of the code we generate in addition to user code:
```csharp
internal interface __IRegistrarGenericTypeProxy__CustomNSObject_1__
{
void __IRegistrarGenericTypeProxy__CustomNSObject_1____SomeMethod (IntPtr p0);
}
public class CustomNSObject<T> : NSObject, __IRegistrarGenericTypeProxy__CustomNSObject_1__
where T : NSObject
{
[Export ("someMethod:")]
public void SomeMethod (T someInput)
{
// ...
}
// generated implementation of the proxy interface:
public void __IRegistrarGenericTypeProxy__CustomNSObject_1____SomeMethod (IntPtr sel, IntPtr p0, IntPtr* exception_gchandle)
{
try {
var obj0 = (T) Runtime.GetNSObject<T> (p0);
SomeMethod (obj0);
} catch (Exception ex) {
*exception_gchandle = Runtime.AllocGCHandle (ex);
}
}
// generated registrar callbacks:
private static class __Registrar_Callbacks__
{
[UnmanagedCallersOnly (EntryPoint = "_callback_1_CustomNSObject_1_SomeMethod")]
public unsafe static void callback_1_CustomNSObject_1_SomeMethod (IntPtr pobj, IntPtr sel, IntPtr p0, IntPtr* exception_gchandle)
{
var proxy = (__IRegistrarGenericTypeProxy__CustomNSObject_1__)Runtime.GetNSObject (pobj);
proxy.__IRegistrarGenericTypeProxy__CustomNSObject_1____SomeMethod (sel, p0, exception_gchandle);
}
}
}
```
```csharp
// regular non-generic class for comparison:
public class CustomNSObject : NSObject
where T : NSObject
{
[Export ("someMethod:")]
public void SomeMethod (NSSet someInput)
{
// ...
}
private static class __Registrar_Callbacks__
{
[UnmanagedCallersOnly (EntryPoint = "_callback_1_CustomNSObject_1_SomeMethod")]
public unsafe static void callback_1_CustomNSObject_1_SomeMethod (IntPtr pobj, IntPtr sel, IntPtr p0, IntPtr* exception_gchandle)
{
try {
NSSet obj0 = Runtime.GetNSObject<NSSet> (p0);
SomeMethod (obj0);
} catch (Exception ex) {
*exception_gchandle = Runtime.AllocGCHandle (ex);
}
}
}
}
```
---------
Co-authored-by: Alex Soto <alex@alexsoto.me>