Repository.Discover() throws exception in Release mode, but not Debug mode

Offen
#2,122 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
35/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
csharp, git
Bereich
tooling

Rechercherichtung

Beginne damit, den Fehler im Release-Modus über den Befehl der Visual Studio-Erweiterung zu reproduzieren, und verwende dabei Repository.Discover(filePath) mit der aktiven LLVM-Quelldatei. Untersuche den Typinitialisierer von NativeMethods und vergleiche das Verhalten von Release und Debug unter Windows 11 mit .NET Framework 4.8. Als erledigt gilt die Aufgabe, wenn Repository.Discover im Release-Build den Repository-Pfad zurückgibt, ohne eine Ausnahme auszulösen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

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

Vorherrschende Sprache
C#
Sterne
3.5k
Forks
925
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus libgit2/libgit2sharp

Alle Issues in libgit2/libgit2sharp

Ähnliche Issues

Weitere Issues zu C#

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.