Я пытаюсь создать настольное приложение C# для Windows с Xamarin Studio. После импорта пакета LibGit2Sharp (и, следовательно, пакет LibGit2Sharp.NativeBinaries), любая попытка реально использовать результаты библиотеки в одном из них:Libgit2sharp не может найти git2 - *. Dll при построении в студии Xamarin на Windows
Exception in Gtk# callback delegate
Note: Applications can use GLib.ExceptionManager.UnhandledException to handle the exception.
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.DllNotFoundException: git2-785d8c4
at (wrapper managed-to-native) LibGit2Sharp.Core.NativeMethods:git_config_find_xdg (LibGit2Sharp.Core.Handles.GitBuf)
at LibGit2Sharp.Core.Proxy.ConvertPath (System.Func`2 pathRetriever) [0x00006] in <filename unknown>:0
at LibGit2Sharp.Core.Proxy.git_config_find_xdg() [0x00000] in <filename unknown>:0
at LibGit2Sharp.Configuration..ctor (LibGit2Sharp.Repository repository, System.String repositoryConfigurationFileLocation, System.String globalConfigurationFileLocation, System.String xdgConfigurationFileLocation, System.String systemConfigurationFileLocation) [0x00032] in <filename unknown>:0
at LibGit2Sharp.Configuration.BuildFrom (System.String repositoryConfigurationFileLocation, System.String globalConfigurationFileLocation, System.String xdgConfigurationFileLocation, System.String systemConfigurationFileLocation) [0x00000] in <filename unknown>:0
at LibGit2Sharp.Configuration.BuildFrom (System.String repositoryConfigurationFileLocation, System.String globalConfigurationFileLocation) [0x00000] in <filename unknown>:0
at bravura.tools.git.helper.operations.CoreSettings.run() [0x00015] in C:\code\bravura\git-helper\operations\CoreSettings.cs:37
at bravura.tools.git.helper.operations.CoreMenu.OnButtonOkReleased (System.Object sender, System.EventArgs e) [0x00020] in C:\code\bravura\git-helper\operations\CoreMenu.cs:43
at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&)
at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00038] in C:\j\workspace\v\repos\mono\mcs\class\corlib\System.Reflection\MonoMethod.cs:295
Я обнаружил, что вручную положить DLL и PDB в корневом выходе каталог сортирует проблему, но это не делает для хорошего процесса сборки. Действительно, должен быть способ добавить каталог «NativeBinaries *» в путь загрузки. Я уже пытался загрузить библиотеку вручную, но поскольку это не .NET, этот параметр просто не работает.
Я пропустил что-то очевидное? Является ли это общей проблемой, о которой я просто промахиваюсь?
Я уже проверил следующие вопросы, но безрезультатно:
- LibGit2Sharp fails to find git2.dll
- How to use Libgit2Sharp on Mono/MacOsX?
- DllNotFoundException and PATH environment variable
Если вы не хотите, чтобы git2-785d8c4.dll находиться в том же каталоге, вы .exe, вероятно, придется использовать [SetDllDirectory] (http://stackoverflow.com/questions/4958742/c -move-dll-files-from-root-to-sub-folder/4960063 # 4960063) и укажите его местоположение. –
Не удалось найти пространство имен для этой функции, но во время поиска я нашел исправление, которое, похоже, работает. – tzrlk