System.Data.SQLite 1.0.108给出“处理器架构之间存在不匹配”警告

时间:2018-03-08 17:31:37

标签: visual-studio-2017 nuget system.data.sqlite configurationmanager processor-architecture

我有一个使用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”只是为了解决这个问题。我能做些什么来解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

  

我的解决方案使用“任何CPU”,我不想将其更改为“x86”只是为了解决这个问题。我能做些什么来解决这个问题吗?

正如this thread中的Anton所说,System.Data.SQLite依赖于System.Data.SQLite.Core,这是一个混合程序集,即它包含托管代码和本机代码。因此,特定System.Data.SQLite.dll可以是x86x64,但不是两种架构。

  

因此,微软只是在你说出你的时候会发出警告   project与“Any CPU”兼容,但你依赖于a   项目或.dll程序集,x86或x64。因为你有   一个x86依赖,从技术上讲你的项目不是“任何CPU”   兼容。

您可以编辑项目文件并添加此属性组和设置以支持警告:

<PropertyGroup>
  <ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>None</ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
</PropertyGroup>

如果您非常了解解决方案体系结构并且不需要程序集SQLite.Interop.dll,则可以使用“System.Data.SQLite(x86 / x64)”来消除此警告。

有关详细信息,请参阅this threadthis thread

希望这有帮助。