¿Cómo usar libgit2sharp con Xamarin.Mac?

Estoy tratando de usar la gran biblioteca libgit2sharp en una Mac. Por lo tanto, estoy usando Xamarin Studio para crear una aplicación de Mac para leer información de un repository de Git.

Cuando uso la biblioteca dentro de un mono ejecutable normal (objective Mono / .NET4.5 , todo funciona bien. Pero cuando creo un proyecto Xamarin.Mac, ocurre el siguiente error y no veo una forma de evitarlo:

 Unhandled Exception: System.TypeInitializationException: The type initializer for 'LibGit2Sharp.Core.NativeMethods' threw an exception. ---> System.DllNotFoundException: git2-a5cf255 at (wrapper managed-to-native) LibGit2Sharp.Core.NativeMethods:git_libgit2_init () at LibGit2Sharp.Core.NativeMethods+LibraryLifetimeObject..ctor () [0x00006] in <9f09b2b30ef34f0b8a3a0a6bdde2be90>:0 at LibGit2Sharp.Core.NativeMethods..cctor () [0x00058] in <9f09b2b30ef34f0b8a3a0a6bdde2be90>:0 --- End of inner exception stack trace --- at LibGit2Sharp.Core.Proxy.git_repository_open (System.String path) [0x00008] in <9f09b2b30ef34f0b8a3a0a6bdde2be90>:0 at LibGit2Sharp.Repository..ctor (System.String path, LibGit2Sharp.RepositoryOptions options, LibGit2Sharp.Repository+RepositoryRequinetworkingParameter requinetworkingParameter) [0x0007e] in <9f09b2b30ef34f0b8a3a0a6bdde2be90>:0 [ERROR] FATAL UNHANDLED EXCEPTION: System.TypeInitializationException: The type initializer for 'LibGit2Sharp.Core.NativeMethods' threw an exception. ---> System.DllNotFoundException: git2-a5cf255 at (wrapper managed-to-native) LibGit2Sharp.Core.NativeMethods:git_libgit2_init () at LibGit2Sharp.Core.NativeMethods+LibraryLifetimeObject..ctor () [0x00006] in <9f09b2b30ef34f0b8a3a0a6bdde2be90>:0 at LibGit2Sharp.Core.NativeMethods..cctor () [0x00058] in <9f09b2b30ef34f0b8a3a0a6bdde2be90>:0 --- End of inner exception stack trace --- at LibGit2Sharp.Core.Proxy.git_repository_open (System.String path) [0x00008] in <9f09b2b30ef34f0b8a3a0a6bdde2be90>:0 at LibGit2Sharp.Repository..ctor (System.String path, LibGit2Sharp.RepositoryOptions options, LibGit2Sharp.Repository+RepositoryRequinetworkingParameter requinetworkingParameter) [0x0007e] in <9f09b2b30ef34f0b8a3a0a6bdde2be90>:0 

Cuando busqué en Google, encontré muchos temas que se cierran con "build libgit2sharp en su máquina para get los files .dylib correctos" . Esto pudo haber sido un problema en el pasado, pero ya no, así que esto no me ayudó. Como dije, puedo usar libgit2sharp fácilmente con un ejecutable mono.

Por cierto, no puedo usar el package Nuget "libgit2sharp" porque dice que el objective Xamarin.Mac no es compatible. Estoy usando el package "libgit2sharp.portable" que no arroja ningún error en la installation ni en el time de compilation. Es solo ese post de error de arriba en time de ejecución.

Mi aplicación de muestra está disponible para download aquí: https://files.fm/u/7eq55jjq

¿Alguna sugerencia para evitar esto? ¡Gracias!

Actualización El error podría indicar que la ruta de acceso a dylib es incorrecta ("DLL no se encuentra"), pero eso no es cierto. El file está exactamente donde debería estar.

Dios mío, estaba tan cerca. y Philippe estaba allí también: no es correcto asegurarse de colocar el file dylib en las carpetas del directory de salida (como el package Nuget lo hace automáticamente) que sería /lib/osx/libgit2-1196807.dylib .

En cambio, descubrí que el file dylib debe colocarse dentro del file * .app. Pero en lugar de hacerlo manualmente, Xamarin Studio ofrece una cosa llamada "Referencias nativas" para los proyectos de Xamarin.Mac.

enter image description here

Debería haber visto esta "Referencias Nativas" antes. Lo siento chicos, pero tal vez eso ayude a alguien.

Estoy bastante seguro de que el problema proviene del hecho de que las bibliotecas nativas que vienen en un package nuget separado 'Libgit2sharp.NativeBinary' no se copyn en la carpeta de salida (debe estar en un subdirectory 'lib').

La copy normalmente la realiza un objective durante la construcción del proyecto.