Проблемы с загрузкой git2.dll?

Я пытаюсь использовать библиотеку libgit2sharp. Мой единственный код

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

и когда я запускаю его, я получаю сообщение об ошибке «Невозможно загрузить DLL «git2»: указанный модуль не найден. Итак, я вручную взял git2.dll из libgit2sharp и переместил его в каталог. При запуске той же программы после этого я получаю другую ошибку: Была предпринята попытка загрузить программу с неправильным форматом.

Исследуя это, я нашел ​​этот post и решение, которое, казалось, сработало для плаката, не сработало для меня. Этот пост также был сделан год назад, и для него было сделано предполагаемое исправление, я использую последнюю ветку libgit2sharp (я пробовал старые репозитории без изменений)

Любые идеи?


person Whyrusleeping    schedule 02.07.2012    source источник
comment
На какую версию .NET вы ориентируетесь?   -  person Cameron    schedule 02.07.2012
comment
Целевая платформа по умолчанию, клиент .NET framework 4.0   -  person Whyrusleeping    schedule 02.07.2012
comment
Кроме того, изменение этого параметра на 3.5 ничего не меняет.   -  person Whyrusleeping    schedule 02.07.2012
comment
Неверный формат обычно указывает на проблему с разрядностью. Проверьте настройку целевой платформы в проекте и убедитесь, что вы получили правильную библиотеку git (x86 или amd64) из libgit2sharp/Lib/NativeBinaries.   -  person lnmx    schedule 02.07.2012


Ответы (1)


Рекомендуемым вариантом будет установка последнего пакета LibGit2Sharp NuGet, который займет позаботьтесь о том, чтобы установить все в правильном месте.

Однако, если вы предпочитаете делать это вручную, репозиторий GitHub включает в себя как x86, так и amd64 версию файла git2.dll. Выполнение проверки ветки master или vNext должно их получить.

Помните, что каждая версия LibGit2Sharp работает с определенной версией двоичного файла libgit2. Каждая ветка LibGit2Sharp содержит подмодуль libgit2, указывающий на перенос коммита libgit2.

подмодуль

Для правильной работы сборка LibGit2Sharp ожидает, что двоичный файл git2.dll будет расположен в определенной древовидной структуре.

LibGit2Sharp.dll
|__NativeBinaries
   |__x86
   |  |_git2.dll
   |
   |__amd64
      |_git2.dll
person nulltoken    schedule 02.07.2012
comment
Я делаю расширение VS, используя проект VSIX. Файлы git2.dll копировались в каталог bin\Debug|Release, но не включались в мой пакет VSIX. В итоге мне пришлось создать структуру папок NativeBinaries\amd64 и x86 в моем проекте, а затем связать файлы git2-3f8d005.dll в виде ярлыков. Затем в свойствах ярлыка я установил для свойства Include In VSIX значение true, и теперь сборки включаются в VSIX с правильной структурой папок. Это работает, но не идеально, потому что каждый раз, когда я обновляю пакет NuGet LibGit2Sharp, мне также нужно обновлять пути быстрого доступа. - person deadlydog; 26.11.2014