2015-09-17 13 views
5

Sto usando la versione Core.Data.SQLite: 1.0.98.1 pacchetto nuget con Visual Studio 2015. Quando costruisco il mio progetto che fa riferimento il mio pacchetto System.Data.SQLite, copia due cartelle (x86 e x64) ciascuna contenente un SQLite.Interop.dll nella directory di output. Tuttavia, quando costruisco il mio progetto di test o qualsiasi altro progetto che fa riferimento al progetto menzionato in precedenza, queste cartelle non vengono copiate nella directory di output del progetto principale e ottengo DllNotFoundException su SQLite.Interop.dll.I file SQLite.Interop.dll non vengono copiati sul percorso di output del progetto quando richiesto dal progetto di riferimento

Nota: questo è specificamente quando il progetto fa riferimento a System.Data.SQLite fa riferimento a un altro progetto

risposta

16

La soluzione Recomended come doumented here è quello di creare uno System.Data.SQLite.Core.targets.user nella vostra pacchetti \ System.Data.SQLite.Core.1.0.98.1 \ costruire \ [la versione quadro qui] cartella contenente

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
<PropertyGroup> 
<ContentSQLiteInteropFiles>true</ContentSQLiteInteropFiles> 
<CopySQLiteInteropFiles>false</CopySQLiteInteropFiles> 
<CleanSQLiteInteropFiles>false</CleanSQLiteInteropFiles> 
<CollectSQLiteInteropFiles>false</CollectSQLiteInteropFiles> 
</PropertyGroup> 
</Project> 

Ma se non si vuole aggiungere nulla nella cartella pacchetti al controllo del codice sorgente, puoi semplicemente aggiungere quanto segue direttamente al file di progetto

<PropertyGroup> 
    <ContentSQLiteInteropFiles>true</ContentSQLiteInteropFiles> 
    <CopySQLiteInteropFiles>false</CopySQLiteInteropFiles> 
    <CleanSQLiteInteropFiles>false</CleanSQLiteInteropFiles> 
    <CollectSQLiteInteropFiles>false</CollectSQLiteInteropFiles> 
</PropertyGroup> 
+1

Le mie build locali funzionavano correttamente: i file CopySQLiteInteropFiles eseguivano e copiavano i file nell'OutDir sulla mia macchina. Ma la stessa build è fallita durante i miei test su TeamCity - Dll non ha trovato eccezioni sui file Interop mancanti. La creazione delle proprietà CopySQLiteInteropFiles nel mio file proj è ciò che ha funzionato per far sì che TeamCity copi i file di interoperabilità. +1 –

+0

La seconda soluzione ha funzionato benissimo per me. Non si interrompe l'interruzione consigliata non appena si ottiene una nuova versione da parte di nuget? – quarkonium

Problemi correlati