Open
Description
I'm making a VSIX extension that does Git operations, I ran into this issue while trying to get the corresponding repo for the active document. When testing in the LLVM repo, doing Repository.Discover()
on the active file C:\Users\<my_user_name>\source\repos\llvm-project\clang\lib\Format\UnwrappedLineParser.cpp
throws in Release mode, but on Debug mode it correctly gets the repository path of C:\Users\<my_user_name>\source\repos\llvm-project\.git\
Reproduction steps
- Create Visual Studio Extension project and add a command, set build to Release mode
- Within the command, get active document with
DTE applicationObject = (DTE)await AsyncServiceProvider.GlobalProvider.GetServiceAsync(typeof(SDTE));
- Get full file path with
var filePath = applicationObject.ActiveDocument.FullName
- Call
var repoPath = Repository.Discover(filePath)
Expected behavior
repoPath
holds the path of the repository
Actual behavior
Exception is thrown with the message The type initializer for 'LibGit2Sharp.Core.NativeMethods' threw an exception.
Version of LibGit2Sharp (release number or SHA1)
0.30.0
Operating system(s) tested; .NET runtime tested
Windows 11, .NET Framework 4.8
Activity
brantnej commentedon Aug 27, 2024
If I hard code the repository path, then the constructor
new Repository(repoPath)
also throws an exception withThe type initializer for 'LibGit2Sharp.Core.NativeMethods' threw an exception
in Release mode only. It is likely to do with something in my configuration but I would like to know what could be happening here.brantnej commentedon Aug 27, 2024
It appears that the inner exception says
Unable to load DLL 'git2-a2bde63': The specified module could not be found
which is a duplicate of https://stackoverflow.com/questions/50586936/the-type-initializer-for-libgit2sharp-core-nativemethods-threw-an-exception , but even after copying the file over to the release folder it still doesn't work