以上的答案似乎都对我无效,可能是因为我使用的是VS2015,但这让我想到了一个好的解决方法来解决这个问题。
我的具体情况与@Eternal21相同——我有一个WPF UI,它使用一个客户端库,该库通过nuget添加了SQLite。是的,问题在于Interop.dll没有被复制到启动应用程序(即没有安装SQLite的WPF UI)中。
如果你很着急,那么简单地使用nuget将SQLite添加到WPF项目中就是一个快速而简单的解决方法。
我的解决方案略微繁琐,使用XCOPY命令,但它有一个优点,即可以复制x86和x64目录,并且还可以处理Debug和Release版本。它的缺点是包含硬编码的项目名称。我可以看出你可以使用宏来摆脱第一个,但我不容易看出如何摆脱第二个,所以如果项目名称更改,你必须手动更改它(但这种情况相当少见)。
我的解决方案是在启动项目的后期构建中使用这些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 - 如果目标文件已经存在,则禁止提示。
我将其设置为仅在成功构建时运行,对我非常有效。希望能帮到某些人。