【发布时间】:2016-03-07 01:38:55
【问题描述】:
我正在尝试使用 Xamarin Studio 在 Windows 上构建 C# 桌面应用程序。在导入 LibGit2Sharp 包(以及随后的 LibGit2Sharp.NativeBinaries 包)后,任何实际使用该库的尝试都会导致以下结果之一:
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,所以该选项不起作用。
我是否遗漏了一些明显的东西?这是一个常见问题,我只是在胡思乱想?
我已经检查了以下问题无济于事:
【问题讨论】:
-
如果您不希望 git2-785d8c4.dll 与您的 .exe 位于同一目录中,您可能必须使用 SetDllDirectory 并指定其位置。
-
找不到该函数的命名空间,但在搜索时,我发现了一个似乎有效的修复程序。
标签: c# mono xamarin-studio libgit2 libgit2sharp