Не удалось загрузить DLL «git2.dll». Указанный модуль не найден.

Я пытаюсь использовать libgit2sharp в веб-проекте. Проблема в том, что решение libgit2sharp предназначено для VS2010, а я использую VS2008. Поэтому мне пришлось создать новое решение и изменить код, чтобы не использовать параметры по умолчанию. Это не было проблемой, за исключением того, что я получаю исключение, указанное в заголовке, когда пытаюсь использовать скомпилированную DLL libgit2sharp.

Я пытался связать git2.dll, но это не помогло. Копирование git2.dll в веб-проект тоже не помогло.

Изменить: проблема была решена в системе отслеживания проблем LibGit2Sharp: https://github.com/libgit2/libgit2sharp/issues/39


person Chuck Savage    schedule 11.06.2011    source источник


Ответы (1)


Навскидку я бы сказал, что git2.dll (скомпилированная версия библиотеки C libgit2 ) отсутствует в выходном каталоге (bin\[Release|Debug]).

Поскольку git2.dll не является управляемой зависимостью, вы не можете ссылаться на нее из своего проекта.

Однако благодаря событию предварительной сборки вы сможете скопировать двоичный файл в выходной каталог.

Другим вариантом может быть ссылка на файл dll из вашего решения и изменение его свойств, чтобы сделать его «скопированным, если он новее» (см. ниже).

введите здесь описание изображения

Если у вас возникнут какие-либо проблемы, создайте проблему в системе отслеживания ошибок.

Следить будет легче ;-)

ОБНОВЛЕНИЕ:

Чтобы это запустилось, вы должны убедиться, что после компиляции файл libgit2.dll находится в том же каталоге, что и сборка LibGit2Sharp.dll. Таким образом, динамическая загрузка нативной библиотеки сборкой будет работать должным образом.

git2.dll (скомпилированная версия библиотеки C libgit2) должна быть создана в верхний уровень вашего выходного каталога (bin\[Release|Debug]).

Более подробную информацию можно найти в тикете.

person nulltoken    schedule 11.06.2011
comment
Хорошо, я открыл тикет, так как это не помогло - я уже связал его и скопировал во все папки bin/output. - person Chuck Savage; 11.06.2011
comment
@Chuck Savage действительно переместил git2.dll из папки Lib и поместил его на верхний уровень вашего проекта, решив вашу проблему? - person nulltoken; 13.06.2011
comment
@nulltoken: +1 Добавление в качестве ссылки - хорошая идея. Раньше кодировал часть предварительной сборки.. - person jacob aloysious; 03.05.2013
comment
@nulltoken: я вижу, у нас есть два двоичных файла, один под amd64, а другой под x86. Мое приложение представляет собой 32-битное приложение для Windows, которое работает как на x86, так и на 64-битной версии (реестр: помогает Wow6432Node). Должен ли я добавить amd64 в свой проект? - person jacob aloysious; 03.05.2013
comment
@jacobaloysious: Если ваше приложение только 32-битное, не стесняйтесь развертывать только родную 32-битную dll. Его можно развернуть рядом с управляемой сборкой или в структуре каталогов Lib/NativeBinaries/x86, откуда он будет загружаться. - person nulltoken; 03.05.2013
comment
@nulltoken: 32-битное приложение не работает в 64-битной ОС, если я использую только 32-битную.dll.. Мне пришлось добавить amd64.dll, чтобы оно заработало.. - person jacob aloysious; 04.05.2013