2015-08-06 13 views
15

Sto sviluppando un UWP. Sto usando la libreria sqlite-net-pcl. Dopo aver aggiornato la mia applicazione da RC a RTM, ho ricevuto un errore di runtime - Impossibile trovare sqlite3.dll - se viene eseguito su un emulatore mobile o su un dispositivo. Ha funzionato perfettamente dopo aver aggiunto un riferimento a C++ 2013 Runtime Package e l'ho eseguito su Local Machine.Impossibile caricare DLL sqlite3 in Universal Windows App in esecuzione su Mobile

Messaggio eccezione:

Message "The type initializer for 'SQLitePCL.raw' threw an exception." string

Il messaggio InnerException:

{"Unable to load DLL 'sqlite3': The specified module could not be found. (Exception from HRESULT: 0x8007007E)"} System.Exception {System.DllNotFoundException}

Naturalmente non ho potuto aggiungere un referece a 'Sqlite per Universal App Platform' perché sto geting il seguente errore

Severity Code Description Project File Line Error Payload contains two or more files with the same destination path 'sqlite3.dll'. Source files: C:\Program Files (x86)\Microsoft SDKs\UAP\v0.8.0.0\ExtensionSDKs\SQLite.UAP.2015\3.8.11.1\Redist\Debug\ARM\sqlite3.dll C:\Users\sMavrikis.nuget\packages\SQLitePCL.raw_basic\0.7.1\build\native\sqlite3_dynamic\winrt81\arm\sqlite3.dll TestApp1

risposta

32

Aggiungere un riferimento a "SQLite per Universal App Platform" Ciò attiverà l'errore:

Payload contains two or more files with the same destination path 'sqlite3.dll'.

Questo errore si verifica a causa di versione diversa di sqlite3.dll in entrambe le posizioni contrassegnate dall'errore. risolvere il problema semplicemente copiando

C:\Program Files (x86)\Microsoft SDKs\UAP\v0.8.0.0\ExtensionSDKs\SQLite.UAP.2015\3.8.11.1\Redist\Debug\ARM\sqlite3.dll

a

C:\Users\%USERNAME%\.nuget\packages\SQLitePCL.raw_basic\0.7.1\build\native\sqlite3_dynamic\winrt81\arm\sqlite3.dll

sovrascrivere file esistente.

Ricostruisci il tuo progetto. Dovrebbe essere compilato ora.

+2

Grazie. È un aiuto per me Ho un modo diverso. Può essere visto nel messaggio di errore. – FetFrumos

+0

Come detto sopra, devi copiare da e verso le cartelle indicate nel tuo errore (erano diverse per me). Ciò che ha fatto compilare la mia app è stato copiare i file di programma nella cartella del pacchetto. Si noti inoltre che questa soluzione non sempre funziona (l'ho provata con due diverse app e ha funzionato solo su una di esse) – dsnunez

+0

Questo l'ho risolto per me grazie. Questo non sarà un problema per le altre persone che importano il progetto? – jermey

2

Stavo ricevendo gli stessi messaggi di errore. Avevo iniziato a utilizzare SQLite-PCL che richiedeva anche SQLite per Universal App Platform come riferimento. Più tardi sono passato a SQLite.Net-PCL. Questo è quando ho avuto quegli errori. Nella ricerca di una soluzione ho trovato questa pagina. Ha funzionato per un po '. Alla fine ho rimosso il riferimento a SQLite per Universal App Platform e gli errori sono andati via.

0

risposta in ritardo, ma ha avuto il problema ora; Quello che per me è stato risolto è stato quello di eseguire l'aggiornamento del pacchetto Nuget su tutto il progetto nella soluzione poiché uno dei pacchetti stava ancora utilizzando il vecchio riferimento e stava passando al progetto Running facendo riferimento all'altro progetto che non era aggiornato.

9

Se si guardano le due posizioni in conflitto, sembra che ci sia un'estensione Microsoft più ufficiale per UWP, mentre la seconda proviene da un pacchetto nuGet.

Quando ho riscontrato questo errore, avevo bisogno della funzionalità del pacchetto nuGet, quindi ho deciso di mantenerlo e di rilasciare l'altro riferimento. Ho fatto clic con il tasto destro del mouse sul progetto in Solution Explorer e sono andato su Aggiungi-> Riferimento e ho deselezionato il riferimento a SQLite. Sembrava meno incline all'errore che copiare il file da una posizione all'altra a me.

enter image description here

+0

Questa risposta mi ha aiutato a notare che stavo facendo riferimento al 'Pacchetto di runtime Microsoft Visual C++ 2013' piuttosto che al pacchetto' Visual C++ 2015 Runtime per Universal Windows'. La correzione dei riferimenti ha risolto il problema per me. –

0

ho fissato un problema simile selezionando x64 o braccio nella configurazione compilatore.

Error Payload contains two or more files with the same destination path 'e_sqlite3.dll'. Source files: C:\Users\xleon.nuget\packages\SQLitePCLRaw.lib.e_sqlite3.v140\1.1.0\runtimes\win10-arm\native\e_sqlite3.dll C:\Users\xleon.nuget\packages\sqlitepclraw.lib.e_sqlite3.v140\1.1.0\runtimes\win10-x86\native\e_sqlite3.dll

ma questo, naturalmente, vinto't consentono di eseguire l'emulatore

0

Right-Click sul Progetto UWP e scegliere Proprietà.

E assicurarsi che il target della piattaforma della soluzione corrisponda al target della piattaforma del progetto.

Se sono diversi, si otterrà l'errore di compilazione relativo alla copia di file nella stessa destinazione con lo stesso nome (ma diverse piattaforme di destinazione).

Ensure matching target platforms

0

sono riuscito a risolvere la disparità mettendo un condizionale nel Csproj UWP per includere la DLL SQLite

<SDKReference Include="SQLite.UWP.2015, Version=3.19.3" Condition="'$(Configuration)'=='Debug'"> 
    <Name>SQLite for Universal Windows Platform</Name> 
</SDKReference> 

avevo bisogno di correre con la versione UWP per il debug, altrimenti la mia XAML designer potrebbe saltare in aria con "Impossibile trovare SQLite.dll ..."

Problemi correlati