2015-09-17 4 views
5

Я использую пакет System.Data.SQLite Core Version: 1.0.98.1 с пакетом Visual Studio 2015. Когда я создаю свой проект, который ссылается мой пакет System.Data.SQLite, он копирует две папки (x86 и x64), каждая из которых содержит SQLite.Interop.dll в выходной каталог. Однако, когда я создаю свой тестовый проект или любой другой проект, который ссылается на ранее упомянутый проект, эти папки не копируются в выходной каталог родительского проекта, и я получаю исключение DllNotFoundException в SQLite.Interop.dll.Файлы SQLite.Interop.dll не копируются в выходной путь проекта, когда это требуется по проекту, указанному по ссылке

Примечание: это именно тогда, когда проект ссылки System.Data.SQLite ссылается другой проект

ответ

16

Рекомендуют раствор, как doumented here является создание System.Data.SQLite.Core.targets.user в вашей пакеты \ System.Data.SQLite.Core.1.0.98.1 \ построить \ [ваш рамочное версию здесь] папку, содержащую

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

Но если вы не хотите, чтобы добавить что-нибудь в папку пакетов для управления версиями, вы можете просто добавить непосредственно в файл проекта

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

Мои локальные сборки работали нормально - CopySQLiteInteropFiles запускал и копировал файлы в OutDir на моей машине. Но та же самая сборка не прошла во время моих тестов в TeamCity - Dll не обнаружил исключений из недостающих файлов Interop. Создание свойств CopySQLiteInteropFiles в моем файле proj было тем, что работало, чтобы заставить TeamCity копировать файлы interop. +1 –

+0

Второе решение отлично подойдет для меня. Не рекомендуется ли перерыв, как только вы получите новую версию, скажем, от nuget? – quarkonium