Инициализатор типа для «LibGit2Sharp.Core.NativeMethods» вызвал исключение

Я работаю над консольным приложением С# (.NET 4.6.1), и при запуске его исполняемого файла я получаю следующую ошибку:

Инициализатор типа для «LibGit2Sharp.Core.NativeMethods» вызвал исключение.

Описание ошибки:

в LibGit2Sharp.Core.NativeMethods.git_repository_open(git_repository*& репозиторий, путь к файлу)
в LibGit2Sharp.Core.Proxy.git_repository_open(путь строки)
в LibGit2Sharp.Repository..ctor(путь строки, параметры RepositoryOptions, RepositoryRequiredParameter requiredParameter)
в LibGit2Sharp.Repository..ctor(строковый путь)
в MyProj.MyClass.GetMaxBranchVersion(String repoPath)

Внутреннее исключение:

System.IO.FileNotFoundException: не удалось загрузить файл или сборку «System.Runtime.InteropServices.RuntimeInformation, версия = 0.0.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a» или одну из ее зависимостей. Система не может найти указанный файл. Имя файла: «System.Runtime.InteropServices.RuntimeInformation, версия = 0.0.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a» в LibGit2Sharp.Core.Platform.get_OperatingSystem() в LibGit2Sharp.Core.NativeMethods..cctor()

Теперь код проекта отлично работает при его отладке или простом запуске в Visual Studio — ошибка возникает при попытке запустить его как исполняемый файл. На самом деле проблема не в самом методе GetMaxBranchVersion, потому что я пытался вообще не вызывать его, и это все равно привело к появлению ошибки при запуске следующего метода.

Я попытался добавить следующие элементы конфигурации в файл .csproj в соответствии с этим ответом, но, к сожалению, , это не решило мою проблему:

<PropertyGroup>
..
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
..
</PropertyGroup>

Что может быть возможной причиной?

Я понимаю, что предоставленной информации может быть немного, но при необходимости могу предоставить дополнительную информацию.


person Rigerta    schedule 29.05.2018    source источник


Ответы (1)


Мне удалось решить мою проблему, выполнив следующие действия:

  1. Изменил Target Framework для проекта на .NET 4.7
  2. Скопировал System.Runtime.InteropServices.RuntimeInformation.dll в папку, из которой я пытался запустить исполняемый файл

В этот момент я получил еще одну ошибку:

System.DllNotFoundException: невозможно загрузить DLL «git2-6311e88»: указанный модуль не найден. (Исключение из HRESULT: 0x8007007E) в LibGit2Sharp.Core.NativeMethods.git_libgit2_init()
в LibGit2Sharp.Core.NativeMethods.LoadNativeLibrary() в LibGit2Sharp.Core.NativeMethods..cctor()

Благодаря этому ответу я смог решить эту проблему, скопировав также git2-6311e88.dll (в моем случае нужна была версия x86, которая обычно находится в вашей папке bin/debug или bin/release под lib/os-version, в моем случае lib/win32)

И вуаля! Оно работает! Удачи всем, кто борется с той же проблемой.

person Rigerta    schedule 30.05.2018