【问题标题】:PCLStorage in Windows Phone 8Windows Phone 8 中的 PCLStorage
【发布时间】:2014-02-26 20:24:36
【问题描述】:

我正在将 PCLStorage 用于我正在处理的 Win8/Wp8 项目。我在 PCL 本身中使用它,并在我的 Win8、Wp8 和 PCL 项目中引用它。在 Win8 中一切正常。

然而,在 Wp8 中,一旦我点击我的 PCL 进行使用 PCLStorage 的存储,当我调用 FileSystem.Current; 时,我会得到一个 NotImpmlementedException

“此程序集的可移植版本中未实现此功能。您应该从主应用程序项目中引用 PCLStorage NuGet 包,以便引用特定于平台的实现。”

但就像我说的,我在我的 Wp8 项目和 PCL 项目中引用了 PCLStorage NuGet 包,就像在我的 Win8 项目中一样。

知道发生了什么吗?

(我还应该注意,如果我在新的 Wp8 项目中使用 PCLStorage,它可以正常工作)

【问题讨论】:

    标签: c# windows-phone-8 windows-8 portable-class-library


    【解决方案1】:

    尝试从所有项目中卸载 PCLStorage NuGet 包,然后在所有项目中重新安装。

    如果仍然无法正常工作,请尝试检查 WP8 项目中对 PCLStorage DLL 的引用,并确保它们来自包中的 wp8 文件夹。

    如果这没有任何结果,请尝试在从 PCL 到 PCL 存储 DLL 的引用中将 copy local 设置为 false。如果你必须这样做,这是一个需要修复的问题,所以请提交一个错误。

    编辑:VS 2013 Update 2 RC 中存在一个可能导致此问题的错误。如果您在 Windows Phone 应用程序中引用此 NuGet 包,它应该可以解决此问题:SuppressPackagingPclFacades。或者,将 Copy Local 设置为 false 以从 PCL 库引用 PCL 存储程序集也应该可以解决此问题。

    【讨论】:

    • 还是不行。我刚刚尝试在我的 App.xaml.cs 中添加对 FileSystem.Current 的引用,但同样失败。
    • 还有其他想法吗?我在PCL项目中将copy local设置为false,并验证了wp8项目中的路径=packages\PCLStorage.0.9.3\lib\wp8\PCLStorage.dll。还检查并重新安装了 NuGet 包。正如我上面所说,直接在我的 App.xaml.cs 中使用它甚至都不起作用。
    • @earthling 在您最初的问题中,您说如果您从一个新的 WP8 项目开始,它可以正常工作。它是否正确?您可以做的一件事是在类似 Reflector 的工具中打开包含在 .xap 文件中的 PCLStorage.dll,并查看它是否包含 WinRTFileSystem、WinRTFile 和 WinRTFolder 的实现。
    • 我在我的项目中观察到了同样的事情。一切正常,然后我安装了 VS2013 Update 2 RC(用于 Windows Phone 8.1 开发)——在这次升级之后,我遇到了与上述相同的问题。我通过在我的 PCL 项目中的 PCLStorage.dll 程序集上手动设置 copy local=false 来“修复”该问题
    • 与 Xamarin.IOS 的 @espenalb 相同的问题和修复,因此似乎不是特定于 Windows Phone。添加错误报告链接:pclstorage.codeplex.com/workitem/10
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-26
    相关资源
    最近更新 更多