我有一个使用System.Data.SQLite版本1.0.97的Visual Studio解决方案。当我使用NuGet更新到最新版本(1.0.108)时,我开始收到此警告:
项目的处理器架构之间存在不匹配 正在构建“MSIL”和参考的处理器架构 “System.Data.SQLite,Version = 1.0.108.0,Culture = neutral, PublicKeyToken = db937bc2d44ff139,processorArchitecture = x86“,”x86“。 这种不匹配可能会导致运行时故障。请考虑改变 通过的目标处理器架构的项目 配置管理器,以便对齐处理器体系结构 您的项目和引用之间,或依赖于 具有与目标匹配的处理器体系结构的引用 您项目的处理器架构。
我的解决方案使用“任何CPU”,我不想将其更改为“x86”只是为了解决这个问题。我能做些什么来解决这个问题吗?
答案 0 :(得分:2)
我的解决方案使用“任何CPU”,我不想将其更改为“x86”只是为了解决这个问题。我能做些什么来解决这个问题吗?
正如this thread中的Anton所说,System.Data.SQLite
依赖于System.Data.SQLite.Core
,这是一个混合程序集,即它包含托管代码和本机代码。因此,特定System.Data.SQLite.dll
可以是x86
或x64
,但不是两种架构。
因此,微软只是在你说出你的时候会发出警告 project与“Any CPU”兼容,但你依赖于a 项目或.dll程序集,x86或x64。因为你有 一个x86依赖,从技术上讲你的项目不是“任何CPU” 兼容。
您可以编辑项目文件并添加此属性组和设置以支持警告:
<PropertyGroup>
<ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>None</ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
</PropertyGroup>
如果您非常了解解决方案体系结构并且不需要程序集SQLite.Interop.dll
,则可以使用“System.Data.SQLite(x86 / x64)”来消除此警告。
有关详细信息,请参阅this thread和this thread。
希望这有帮助。