【问题标题】:LibGit2Sharp: error FS0229: Error opening binary file -> bad cli header, rva 0LibGit2Sharp: error FS0229: Error opening binary file -> bad cli header, rva 0
【发布时间】:2016-08-09 18:01:06
【问题描述】:

我使用 paket 安装了 LibGit2Sharp 和 LibGit2Sharp.NativeBinaries(首先是最后一个稳定版本,然后是预发布版本),我试图在 F# 脚本中使用它,但我不断收到此错误:

Script1.fsx(3,1):错误 FS0229:打开二进制文件时出错 '../packages\LibGit2Sharp.NativeBinaries\runtimes\win7-x64\native\git2-381caf5.dll': ../packages\LibGit2Sharp.NativeBinaries\runtimes\win7-x64\native\git2-381caf5.dll: 错误的 cli 标头,rva 0

Script1.fsx(3,1): error FS3160: Problem reading assembly '': 异常 'Microsoft.FSharp.Compiler.ErrorLogger+StopProcessing' 类型的为 扔了。

我还尝试在 C# 项目中引用它(VS2015 -> 尝试了 diff 目标框架:4、4.5.2 和 4.6.1),但出现此错误:

与上一个稳定版本相同的错误。 知道我做错了什么吗?

【问题讨论】:

  • 我的猜测是您试图在 .NET 中引用 C 或 C++ dll。您能否展示您如何在代码中引用 libgit2。为什么你需要 libgit 顺便说一句?有windows git客户端。
  • 我添加了本地库应该驻留的文件夹。您不需要直接引用它,但您确实需要引用 LibGit2Sharp。

标签: c# f# libgit2 libgit2sharp


【解决方案1】:

您可能应该参考(在 VS 中或通过 FSI 中的 #r):

#r @"..\packages\LibGit2Sharp.0.23.0-pre20160803182831\lib\net40\LibGit2Sharp.dll"

我可以的

open LibGit2Sharp
let myrepo = new Repository(@"..\Projects\StackOverflow5")

您得到的错误实际上是指本机 libgit2 库,您不需要直接引用它们。但是,LibGit2Sharp 可能找不到它们。在这种情况下,将 x64(或 x86,如果您仍然停留在 32 位)git2-381-caf5.dll 放入 LibGit2Sharp.dll 所在的同一文件夹中。在这种情况下,这与我在上面引用的文件夹相同:

\packages\LibGit2Sharp.0.23.0-pre20160803182831\lib\net40\

【讨论】:

  • 非常感谢,我自己也想不到!复制文件有效:-)
  • @Selketjah 很高兴解决了这个问题。当本机库包装在 .Net 中时会发生这种情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-03
相关资源
最近更新 更多