1

为什么 SQLite 在 NuGet 上不可用?为什么它是 Visual Studio 的一部分,您必须在 Tools->Extensions and Updates 中查找更新?在过去的几个月里,我开始编写 Windows 8 和 Windows Phone 8,我想对此有所了解。

对我来说,在 Windows 8 项目上使用 SQLite 会创建 VS 级别的依赖项。

假设我使用 Visual Studio IDE 引用的 SQLite 版本(示例:3.7.x)开发了一个客户端库,并将该库分发给另一个使用他/她的 Visual Studio IDE 引用的 SQLite 3.8.x 的开发人员,我的客户将图书馆还能用吗?

上周发生在我身上的事情是这样的:

我使用 SQLite 为 Windows Phone 8 开发了一个客户端库,我不得不使用由 Peter Huene 编写的名为 sqlite-net-wp8 的第 3 方包装器。

它位于:https ://github.com/peterhuene/sqlite-net-wp8/

当您查看此项目的 Sqlite.vcxproj 文件 ( https://github.com/peterhuene/sqlite-net-wp8/blob/master/Sqlite.vcxproj ) 时,它引用了给定版本的 SQLite。看起来每次在 Visual Studio 上更新 SQLite 时,都必须更新 .vcxproj 文件。

就像是:

<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <Import Project="$(MSBuildProgramFiles32)\Microsoft SDKs\Windows Phone\v8.0\ExtensionSDKs\SQLite.WP80\**3.8.0.2**\DesignTime\CommonConfiguration\Neutral\SQLite.WP80.props" />
  </ImportGroup>

假设我使用 3.8.0.2 开发客户端库并将其提供给使用相同方法与 Windows Phone 8 应用程序的 SQLite 对话(使用 sqlite-net-wp8)的应用程序开发人员,并且他/她使用不同版本的 SQLite (比如 3.7.x 甚至更新的 3.9.x 版本),我的客户端库还能工作吗?我相信他/她的 sqlite-net-wp8 可能指的是与我的客户端库不同的 SQLite 版本,从而破坏了代码。

当我将 SQLite 3.7.x 更新到 3.8.x 时,它迫使我更新 Sqlite.vcxproj 去查找 3.7 并替换为 3.8,这不是很好的用户体验。

我认为理想情况下它也应该与 3.7.x 向后兼容。但它没有。

如果 SQLite 和 sqlite-net-wp8 在 NuGet 上可用,我可以通知想要使用我的客户端库的开发人员我使用的 SQLite 和 sqlite-net-wp8 的版本。

有什么想法可以克服这个问题并有更好的开发人员处理这个问题的经验吗?

4

1 回答 1

1

我相信 SQLite 在 nuget 上不可用的原因是它是一个本机包,因此要使用的 dll 需要依赖于 nuget似乎还不支持的目标程序集平台

关于为您的项目更新sqlite版本,您不需要手动更新vcxproj,只需使用“添加引用”删除并读取对Sqlite的引用(它将显示在windows->Extension下的Add Reference窗口中你已经安装了扩展)

于 2013-09-24T18:55:23.857 回答