我正在进行一个vsix项目,在其中需要获取有关本地git目录的信息。我正在遵循这篇文章。当我使用LibGit2Sharp
库时,我会得到如下图和错误所描述的异常:
我应该如何解决这个问题?
VS版本细节:
Visual Studio 2019
.Net Framework 4.7.2
我正在进行一个vsix项目,在其中需要获取有关本地git目录的信息。我正在遵循这篇文章。当我使用LibGit2Sharp
库时,我会得到如下图和错误所描述的异常:
我应该如何解决这个问题?
VS版本细节:
Visual Studio 2019
.Net Framework 4.7.2
LibGit2Sharp是一个托管语言(.NET)封装的本地(C)库libgit2的包装器。它是一个P/Invoke层,加上一个为.NET提供语义(对象等)的层。这意味着,您需要同时使用LibGit2Sharp.dll(托管语言部分)和它调用的相应的本地库git2-xxxxxxx.dll
。
本地DLL是LibGit2Sharp依赖的LibGit2Sharp.NativeBinaries项目的一部分。当您安装LibGit2Sharp本身时,它应该被安装(传递依赖)。虽然它试图设置自己作为将安装在输出目录中的依赖关系,但由于本地二进制文件在.NET项目世界中并不被很好地理解,因此这有时可能会失败,特别是对于更复杂的项目类型,如VSIX。
最终,LibGit2Sharp将在其所在位置旁边查找相应的本地DLL。因此,在输出目录中,无论您的VSIX从哪里执行,请尝试将LibGit2Sharp.NativeBinaries项目中的git2-xxxxxxx.dll
复制到该位置。
一旦确定了git2-xxxxxxx.dll
二进制文件的正确位置,您应该将其作为项目安装的一部分进行复制。(例如Build action: None,Copy to output directory: Copy always)
LibGit2Sharp
依赖于 git2-106a5f2.dll
,该文件位于 [Debug|Release]\lib\win32\[x86|[x64]
目录下。
如果缺少该特定版本,则可能需要重新安装 LibGit2Sharp
库,但在卸载和安装之间要卸载 LibGit2Sharp.NativeBinaries
库。
以下 NuGet 包的操作应该有所帮助:
LibGit2Sharp
。LibGit2Sharp.NativeBinaries
。LibGit2Sharp
。注意:即使有新版本,也不要更新 LibGit2Sharp.NativeBinaries
。
%AppData%\Local\Microsoft\VisualStudio\16.0_a31c0a3aExp\Extensions
下次通过Visual Studio调试我的VSIX时,它就可以工作了。希望这可以帮到你,我认为这与该文件夹内的extensions.en-US
文件有关。仅删除我的插件文件夹而不是Extensions文件夹什么也没做。