LibGit2Sharp DllNotFoundException: невозможно загрузить DLL 'git2-106a5f2' - PullRequest
3 голосов
/ 27 января 2020

Я работаю над проектом vsix, где мне нужно получить информацию о локальном каталоге git. Я следую этой статье. Когда я использую библиотеку LibGit2Sharp, я получаю исключение, как описано на следующем рисунке, и ошибка: -

Как я могу решить эту проблему?

Подробности версии VS:

Visual Studio 2019

. Net Framework 4.7.2

Ответы [ 2 ]

2 голосов
/ 27 января 2020

LibGit2Sharp - это оболочка управляемого языка (. NET) вокруг собственной (C) библиотеки, libgit2 . Это слой P / Invoke , плюс слой для предоставления семантики NET (объекты и т. Д. c). Это означает, однако, что вам требуется и LibGit2Sharp.dll (сторона управляемого языка) и git2-xxxxxxx.dll (соответствующая нативная библиотека), в которую он вызывает.

Собственная DLL является частью проекта LibGit2Sharp.NativeBinaries, от которого LibGit2Sharp зависит. Он должен быть установлен (транзитивно) при установке самого LibGit2Sharp. И хотя он пытается установить себя в качестве зависимости, которая будет установлена ​​в выходном каталоге, поскольку собственные двоичные файлы не совсем понятны в мире проектов. NET, иногда это может не работать, особенно для более сложных типов проектов, таких как VSIX .

В конечном счете, LibGit2Sharp будет искать соответствующую нативную DLL вместе с тем, где она находится. Поэтому в выходном каталоге, из которого выполняется VSIX, попробуйте скопировать git2-xxxxxxx.dll, являющийся частью проекта LibGit2Sharp.NativeBinaries, в это расположение.

После того, как вы определили правильное расположение для git2-xxxxxxx.dll двоичный файл, чтобы жить, вы должны скопировать это как часть вашей установки для проекта. (например, Действие построения : Нет, Копировать в выходной каталог : Копировать всегда)

0 голосов
/ 26 марта 2020

У меня была такая же проблема, и я решил ее так:

  1. Скопируйте папку dir из VisualStudioExtension -> Bin -> Debug -> lib в root проекта VisualStudioExtension. В этой папке содержатся файлы DLL, необходимые для работы LibGit2Sharp.
  2. Перетащите папку lib в проект VisualStudioExtension в Visual Studio.

enter image description here

Выберите файлы DLL, щелкните правой кнопкой мыши пункт «Свойства» и установите для него значение «Копировать всегда» и включите его в VSIX.

enter image description here

Это работал для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...