【问题标题】:Problems loading git2.dll?加载 git2.dll 时出现问题?
【发布时间】:2012-07-03 05:21:23
【问题描述】:

我正在尝试使用 libgit2sharp 库。我唯一的代码是

Repository repository = new Repository(@"C:\Path\To\Repo");

当我运行它时,我收到一条错误消息:无法加载 DLL 'git2':找不到指定的模块。因此,我手动从 libgit2sharp 中抓取了 git2.dll 并将其移至目录中。之后运行同一程序时,我收到另一个错误:尝试加载格式不正确的程序。

在研究这个时,我发现this post 并且似乎适用于海报的解决方案对我不起作用。那篇文章也是在一年前发布的,并且已经对其进行了修复,我使用的是 libgit2sharp 的最新分支(我尝试过旧的存储库没有任何变化)

有什么想法吗?

【问题讨论】:

  • 您的目标是什么版本的 .NET?
  • 目标框架为默认,.NET framework 4.0客户端
  • 另外,将此更改为 3.5 不会改变任何内容
  • “格式不正确”通常表示位数问题。检查项目中的“平台目标”设置,并确保从libgit2sharp/Lib/NativeBinaries获取正确的git库(x86或amd64)

标签: c# libgit2sharp


【解决方案1】:

推荐的选项是安装最新的 LibGit2Sharp NuGet package,它将负责将所有内容安装在正确的位置。

但是,如果您更喜欢手动处理,GitHub 存储库包含 git2.dllx86amd64 版本。执行mastervNext 分支的检出应该检索它们。

请注意,LibGit2Sharp 的每个版本都适用于特定版本的 libgit2 二进制文件。每个 LibGit2Sharp 分支都包含一个 libgit2 子模块,它指向被包装的 libgit2 提交。

为了使其完美运行,LibGit2Sharp 程序集要求将 git2.dll 二进制文件定位到特定的树结构中。

LibGit2Sharp.dll
|__NativeBinaries
   |__x86
   |  |_git2.dll
   |
   |__amd64
      |_git2.dll

【讨论】:

  • 我正在使用 VSIX 项目制作 VS 扩展。 git2.dll 文件被复制到 bin\Debug|Release 目录,但未包含在我的 VSIX 包中。我最终不得不在我的项目中创建 NativeBinaries\amd64 和 x86 文件夹结构,然后链接到 git2-3f8d005.dll 文件作为快捷方式。然后,在快捷方式属性中,我将 Include In VSIX 属性设置为 true,现在程序集以正确的文件夹结构包含在 VSIX 中。它可以工作,但并不理想,因为每次我更新 LibGit2Sharp NuGet 包时,我都需要更新快捷路径。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-07
  • 2015-05-03
相关资源
最近更新 更多