【问题标题】:Migrating windows 8 store app to 8.1 sqlite issue将 Windows 8 商店应用程序迁移到 8.1 sqlite 问题
【发布时间】:2013-07-31 13:18:13
【问题描述】:

目前,我正在尝试将我的 Windows 商店应用程序重新定位到 Windows 8.1 预览版。问题是,我在我的一个项目中使用了 sqlite-net 包。我按照此处描述的步骤操作: http://www.lyalin.com/2013/07/09/sqlite-for-windows-runtime-for-windows-8-1-apps/ 并从此链接下载了 sqlite Visual Studio 扩展的预发布版本: http://www.lyalin.com/2013/07/09/sqlite-for-windows-runtime-for-windows-8-1-apps/。 我在我的项目中添加了对新安装的用于 windows 运行时的 sqlite 的引用,但是在构建时出现错误:

Error   2   Windows Runtime type 'Windows.Foundation.Point' was found in
multiple referenced winmd files. Please remove either 'C:\Program Files (x86)\Microsoft
SDKs\Windows\v8.1\ExtensionSDKs\Microsoft.VCLibs\12.0\References\CommonConfiguration\neutral\platform.winmd'
or 'C:\Program Files (x86)\WindowsKits\8.1\References\CommonConfiguration\Neutral\Windows.winmd' 
from the list of referenced files.  C:\Users\Jarosław\Desktop\BCM\Win8Client\MetriceModel\WINMDEXP
MetriceModel (Windows 8.1)

某处,在某个论坛上有人暗示,如果您从项目中删除对 microsoft visual c++ 运行时包的引用,它将解决问题。在我完成整个解决方案后编译得很好,但在运行时出现以下异常:

 Unable to load DLL 'sqlite3': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

在一行抛出异常:

#if NETFX_CORE
        SQLite3.SetDirectory(/*temp directory type*/2, Windows.Storage.ApplicationData.Current.TemporaryFolder.Path);
#endif

SQLite.cs 文件(文件来自前面提到的 sqlite-net 包)。

项目的文件夹 bin/Debug/AppX 包含文件 sqlite3.dll。我的解决方案中的每个项目都将 x86 作为平台目标。我该如何解决这个问题?在迁移项目之前一切正常。

【问题讨论】:

    标签: sqlite windows-8.1 sqlite-net


    【解决方案1】:

    你必须在sqlite下载页面安装正式版的vsix包(v3.8.0.2)。

    在 Visual Studio 插件管理器中,此包版本为 3.7.1.17,不正确。

    之后,我认为这是一个错误,你必须选择好的处理器(平台目标)。

    我遇到了同样的错误,因为我在 x64 机器上部署了一个以 x86 编译的迁移的 winrt 应用程序 (8.1)... => 在 windows 8.0 中它可以工作,但在 windows 8.1 中不行。

    如果您有 x64 机器,则必须选择 x64 目标编译。我希望它会在未来修复...

    【讨论】:

    • 是的,这就是解决方案。问题是我问这个问题时 sqlite v3.8.0.2 不可用:)
    • @wlaroche 我也有同样的问题。迁移到 8.1 后它工作正常,但几天后它开始抛出这个错误。我已经尝试了上述所有方法。请帮忙。
    【解决方案2】:

    能否请您重新安装 WinRT 8.1 的 SQLite 预览版?初始软件包存在问题,但我们与他们合作进行了更新。 http://sqlite.org/download.html

    【讨论】:

    • 重新安装是什么意思?就在今天,我从您提供的链接(第 3 个条目)安装了这个包。这不像我安装了一些旧版本。
    • 如果你有正确的一个(下载页面上相同的哈希/日期包),那很好。我注意到您的用户名中有一个 Unicode 字符,因此您的本地应用程序数据路径。在这种情况下,您可以使用需要您传入Flags的重载SqliteConnection方法吗?鉴于 Unicode 文件路径,这可能是 SQLite 的误报。
    【解决方案3】:

    如果您有例外情况

    SQLite3.SetDirectory(/*temp directory type*/2,windows.Storage.ApplicationData.Current.TemporaryFolder.Path);

    检查您的项目是否使用x86 而不是any CPU

    【讨论】:

      猜你喜欢
      • 2016-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多