开发人员最近将SQLite.Core NuGet包添加到我们的一个解决方案中,以作为内存数据库用于测试目的。使用Debug配置构建解决方案时,一切都很有效;但是,使用“开发”或“发布”配置时测试失败。
我发现只有在使用Debug配置构建时,x64和x86 SQLite.Interop DLL才会被复制到输出文件夹。我可以在解释此行为的配置之间找到.csproj文件中没有任何不同。
为了解决这个问题,我将以下属性组添加到.csproj文件中:
<PropertyGroup>
<ContentSQLiteInteropFiles>true</ContentSQLiteInteropFiles>
<CopySQLiteInteropFiles>false</CopySQLiteInteropFiles>
<CleanSQLiteInteropFiles>false</CleanSQLiteInteropFiles>
<CollectSQLiteInteropFiles>false</CollectSQLiteInteropFiles>
</PropertyGroup>
并将DeploymentItemAttributes添加到测试类中,以便将DLL复制到测试文件夹中。
我不相信每次我们想要使用SQLite时都需要这样做。
将SQLite添加到项目中的正确方法是什么,以便它可以在没有所有这些额外步骤的情况下正常工作?
我们正在运行Visual Studio 2015,解决方案的目标是.NET 4.6.1。
答案 0 :(得分:0)
我们添加了一个System.Data.SQLite.Core.targets.user
文件,其中包含您在NuGet包目录中安装的System.Data.SQLite.Core.targets
文件下所述的属性组。
这样,你不需要在每个项目中都这样做。
我对这种方法并不是非常热心,因为现在我们需要在版本控制系统的NuGet安装文件夹中签入一个文件,并在升级System.Data.SQLite.Core
时重新考虑它。