2012-07-02 13 views
5

Sto cercando di utilizzare la libreria libgit2sharp. Il mio unico codice èProblemi durante il caricamento di git2.dll?

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

e quando l'eseguo ottengo un errore che dice Impossibile caricare la DLL 'git2': il modulo specificato non è stato trovato. Quindi, sono andato manualmente e ho afferrato git2.dll da libgit2sharp e l'ho spostato nella directory. Dopo aver eseguito lo stesso programma, ho ricevuto un altro errore: è stato effettuato un tentativo di caricare un programma con un formato errato.

Durante la ricerca di questo ho trovato this post e la soluzione che sembrava funzionare per il poster non ha funzionato per me. Quel post è stato fatto anche un anno fa e una supposta correzione è stata fatta per questo, sto usando l'ultimo ramo di libgit2sharp (ho provato repository più vecchi senza modifiche)

Qualche idea?

+0

Quale versione di .NET è destinata? – Cameron

+0

Il framework di destinazione è il client predefinito .NET framework 4.0 – Whyrusleeping

+0

Inoltre, la modifica a 3.5 non modifica nulla – Whyrusleeping

risposta

2

L'opzione consigliata è quella di installare l'ultimo LibGit2Sharp NuGet package che si occuperà di installare tutto nella posizione corretta.

Tuttavia, se si preferisce gestirlo manualmente, il repository GitHub include sia la versione x86 e amd64 di git2.dll. Effettuare un checkout del ramo master o vNext dovrebbe recuperarli.

Attenzione che ogni versione di LibGit2Sharp funziona con una versione specifica del binario libgit2. Ogni ramo LibGit2Sharp contiene un sottomodulo libgit2 che punta al commit di libgit2 in fase di wrapping.

submodule

Al fine di farlo funzionare perfettamente, il gruppo LibGit2Sharp aspetta il binario git2.dll per essere collocata in una specifica struttura ad albero.

LibGit2Sharp.dll 
|__NativeBinaries 
    |__x86 
    | |_git2.dll 
    | 
    |__amd64 
     |_git2.dll 
+0

che ha fatto il trucco, grazie! – Whyrusleeping

+1

Sto creando un'estensione VS utilizzando un progetto VSIX. I file git2.dll venivano copiati nella directory bin \ Debug | Release, ma non inclusi nel mio pacchetto VSIX. Ho finito per dover creare la struttura delle cartelle NativeBinaries \ amd64 e x86 nel mio progetto e quindi collegare i file git2-3f8d005.dll come scorciatoie. Nelle proprietà di collegamento, quindi, imposto la proprietà Include In VSIX su true e ora gli assembly vengono inclusi in VSIX con la struttura di cartelle appropriata. Funziona, ma non è l'ideale, perché ogni volta che aggiorno il pacchetto LibGit2Sharp NuGet ho bisogno di aggiornare anche i percorsi di collegamento. – deadlydog

Problemi correlati