上面的答案似乎都不适合我,可能是因为我在 VS2015 上,但这让我觉得这是一个很好的理由来添加我自己的解决方案来解决这个问题。
我的具体情况与@Eternal21 相同——我有一个使用客户端库的 WPF UI,该客户端库是通过 nuget 添加 SQLite 的。而且,是的,问题在于 Interop.dll 没有复制到启动应用程序(即没有安装 SQLite 的 WPF UI)。
如果您赶时间,使用 nuget 将 SQLite 简单地添加到 WPF 项目的解决方案是一种快速简便的解决方案。
我稍微笨拙的解决方案使用 XCOPY,但确实具有复制 x86 和 x64 目录的优势,并且还可以处理调试和发布版本。它的缺点是它包含硬编码的项目名称。我可以看到如何使用宏来摆脱第一个,但我无法轻易看到如何摆脱第二个,因此如果项目名称更改,您必须手动更改它(但这相当罕见)。
我的解决方案是在启动项目的后期构建中使用这些 XCOPY 命令:
xcopy $(SolutionDir)DALProject\bin\$(ConfigurationName)\x64\SQLite.Interop.dll $(SolutionDir)WPFProject\bin\$(ConfigurationName)\x64\*.* /C /F /S /E /Y
xcopy $(SolutionDir)DALProject\bin\$(ConfigurationName)\x86\SQLite.Interop.dll $(SolutionDir)WPFProject\bin\$(ConfigurationName)\x86\*.* /C /F /S /E /Y
/C - 即使出错也继续复制(也许这不是必需的)。
/F - 显示被复制文件的完整路径(可以省略以清理构建输出)。
/S - 复制子目录(这是我创建 /x86 和 /x64 文件夹的唯一方法)。
/E - 复制目录和子目录(可能重复 /S)。
/Y - 如果目标文件已经存在,则禁止提示。
我将此设置为仅在成功构建时运行,这对我来说是一种享受。希望它可以帮助某人。