【问题标题】:Could not install package 'System.Security.SecureString'无法安装包“System.Security.SecureString”
【发布时间】:2017-09-30 14:55:54
【问题描述】:

我无法在我的 PCL 中安装包“System.Security.SecureString”。

我尝试了一些在线解决方案,例如将 project.json 添加到 PCL,但没有任何效果

这是错误日志

试图收集包的依赖信息 'System.Security.SecureString.4.3.0' 关于项目 'TestProj',针对 '.NETPortable,Version=v4.5,Profile=Profile259'
得到 https://api.nuget.org/v3/registration1-gz/system.security.securestring/index.json 好的 https://api.nuget.org/v3/registration1-gz/system.security.securestring/index.json 144ms 收集的结果总数:15 收集依赖项 信息花费了 496.15 毫秒 收集时间的摘要 每个源的依赖项:https://api.nuget.org/v3/index.json - 172.87 ms 正在尝试解决包的依赖关系 'System.Security.SecureString.4.3.0' 与 DependencyBehavior '最低' 解析依赖信息耗时 0 毫秒 安装包 'System.Security.SecureString.4.3.0' 已解决的操作 安装包 'System.Security.SecureString.4.3.0' 检索 来自“nuget.org”的包“System.Security.SecureString 4.3.0”。为了 将包“System.Security.SecureString.4.3.0”添加到项目中 以“portable45-net45+win8+wp8+wpa81”为目标的“TestProj”。安装 失败的。回滚...包'System.Security.SecureString.4.3.0' 项目“TestProj”包中不存在 文件夹中不存在“System.Security.SecureString.4.3.0” '/Users/durai/Documents/BTFleet/BT Fleet/_git/DailyCheckApp/packages' 执行 nuget 操作耗时 136.1 ms 无法安装包 'System.Security.SecureString 4.3.0'。您正在尝试安装此 打包到一个针对目标的项目中 '.NETPortable,Version=v4.5,Profile=Profile259',但包确实 不包含任何程序集引用或内容文件 与该框架兼容。如需更多信息,请联系 包作者。

感谢您成功安装软件包的任何帮助!

【问题讨论】:

  • 如果您将 PCL 升级到 dotnet 标准库,只要 >= 1.3,它应该可以正常安装。它还包括一个 PCL shim 以支持现有的 PCL 库。
  • @JonDouglas - 如果我将 PCL 转换为 dotnet 标准库,那么它可能会破坏基于 MVVMlight 的松散耦合集成?基本上这个 PCL 有 iOS、Android 和 Windows 正在使用的视图模型
  • 很有趣,几个小时前在 StackOverflow 上提出了一个非常相似的问题。我给出了一个全面的答案here 关于如何解决这个问题,坚持使用 PCL。请让我知道我的方法是否适合您。

标签: c# xamarin nuget portable-class-library securestring


【解决方案1】:

.NET 的 System.Security API 对 PCL 不友好,因此无法添加到 PCL 项目中。

但是,它可以添加到 Xamarin 解决方案的其他项目中 - 您可以将其添加到 Android 和 iOS 项目等原生项目中。由于您可以将其添加到那里,您可以在这些项目上创建实现并通过 PCL 中的依赖服务调用这些实现。

高级步骤是:

1.) 在您的 PCL 中创建一个接口。

2.) 在该接口中创建将在 Android 或 iOS 项目中实现的方法。

3.) 将 System.Security.SecureString 的 Nuget 包添加到您的本机项目中。

4.) 在您的本机代码中创建一个类,该类将从 PCL 实现该接口。

5.) 通过 DependencyService 从您的 PCL 调用此代码。

有关如何执行此操作的示例,请参阅此link

虽然冗长乏味,但值得。

【讨论】:

  • 还有其他方法可以解决这个问题吗?这可能与 PCL 的松散耦合性质相矛盾,我已经为 PCL 中的视图模型编写了单元测试(我正在使用 MVVMlight),我可能无法独立运行它。你对此有何看法?
  • 啊有一个拦截器...我没有使用 Xamarin Forms 所以.. 依赖注入是不可能的
  • 在你的第一个问题上,这是必需的,因为某些过程只能在本地完成,因此像这样的依赖服务是绝对必要的。关于第二条评论,我很抱歉,因为我(还)不知道如何实现它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-28
  • 2019-04-15
  • 2015-09-09
  • 2020-07-13
  • 2016-06-09
  • 2011-06-14
  • 2017-12-12
相关资源
最近更新 更多