2015-09-17 42 views
5

我在Visual Studio 2015中使用了System.Data.SQLite核心版本:1.0.98.1 nuget包。當我構建引用項目我的System.Data.SQLite包,它將兩個包含SQLite.Interop.dll的文件夾(x86和x64)複製到輸出目錄。但是,當我構建我的測試項目或引用上述項目的任何其他項目時,這些文件夾不會被複制到父項目的輸出目錄,並且SQLite.Interop.dll上會出現DllNotFoundException。當被引用的項目需要時,SQLite.Interop.dll文件不會複製到項目輸出路徑

注:這是專門在項目引用System.Data.SQLite是由另一個項目

回答

16

的recomended解決方案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進行測試期間,相同的構建失敗 - 沒有找到缺少Interop文件的例外。 在我的proj文件中創建CopySQLiteInteropFiles屬性是讓TeamCity複製互操作文件的原因。 +1 –

+0

第二種解決方案對我很好。剛剛從nuget獲得新版本時不建議中斷嗎? – quarkonium

相關問題