Xamarin.iOS项目中使用的SQLitePCLRaw.core版本错误(1.1.13代替2.0.2)导致生成错误

问题描述 投票:1回答:1

我在Xamarin.iOS项目中出现构建错误:

MTOUCH : error MT2101: Can't resolve the reference 'System.String SQLitePCL.raw::sqlite3_errmsg(SQLitePCL.sqlite3)', referenced from the method 'System.String SQLite.SQLite3::GetErrmsg(SQLitePCL.sqlite3)' in 'SQLitePCLRaw.core, Version=1.1.13.388, Culture=neutral, PublicKeyToken=1488e028ca7ab535'. [/Users/[Redacted]/[Redacted]/[Redacted]/src/[Redacted].iOS/[Redacted].iOS.csproj]

在构建日志中,我可以看到使用的SQLitePCLRaw.core版本与csproj中提供的版本不同,即:

LinkerPleaseInclude.cs(179,25): warning CS1702: Assuming assembly reference 'SQLitePCLRaw.core, Version=2.0.1.610, Culture=neutral, PublicKeyToken=1488e028ca7ab535' used by 'SQLite-net' matches identity 'SQLitePCLRaw.core, Version=2.0.2.669, Culture=neutral, PublicKeyToken=1488e028ca7ab535' of 'SQLitePCLRaw.core', you may need to supply runtime policy [/Users/[Redacted]/[Redacted]/[Redacted]/src/[Redacted].iOS/[Redacted].iOS.csproj]

但是,这并不是说降级到1.1.13。当我在LinkerPleaseInclude.cs中未引用此方法时,根本不会收到此警告。

在我的csproj中,我已设置:

<PackageReference Include="sqlite-net-sqlcipher">
  <Version>1.7.302-beta</Version>
</PackageReference>
<PackageReference Include="akavache.sqlite3">
  <Version>6.9.10</Version>
</PackageReference>
<PackageReference Include="SQLitePCLRaw.bundle_e_sqlcipher">
  <Version>2.0.2</Version>
</PackageReference>
<PackageReference Include="SQLitePCLRaw.core">
  <Version>2.0.2</Version>
</PackageReference>

因此,即使我在csproj中将SQLitePCLRaw.core版本显式设置为2.0.2,编译器也会使用其他版本。如何按照警告中所述供应运行时策略

c# .net xamarin xamarin.ios
1个回答
0
投票

答案通常与依赖项有关。我不得不降级它们,并且必须确保兼容性。

当前我使用:

<PackageReference Include="sqlite-net-sqlcipher" Version="1.6.292" />
<PackageReference Include="SQLitePCLRaw.bundle_sqlcipher" Version="1.1.13" />
<PackageReference Include="akavache.sqlite3" Version="6.5.1" />

似乎支持SQLitePCL 1.1.13的最低Akavache是​​6.5.1,而我一直提供的2.0.2更高的版本甚至使用了错误的版本。

© www.soinside.com 2019 - 2024. All rights reserved.