我正在将现有的多目标Silverlight / .NET项目转换为可移植类库项目,以减少支持多个Microsoft平台所需的项目数量。
我在一个使用System.Security.Cryptography命名空间
的类中有错误名称空间'System.Security'中不存在类型或命名空间名称'Cryptography'(您是否缺少程序集引用?)
这个命名空间在Silverlight中可用,我想知道为什么Portable Class Library不支持它?
一个原因可能是此行为是设计原因:任何与加密相关的代码都不应出现在客户端API中。
答案 0 :(得分:8)
不幸的是,Portable Library不支持Crypto。但是,我们在PclContrib中添加了对它的支持。
答案 1 :(得分:4)
我怀疑它不支持它。该命名空间中的类的成员标有图像:
您可以在.NET Framework类库的参考主题中找到可移植类库项目支持的成员。在类的成员表中,受支持的成员旁边会显示以下可移植类库图标。
我在文档中检查过的每个课程都缺少这个图像。
这个命名空间在Silverlight中可用,我想知道为什么Portable Class Library不支持它?
我不能肯定地说;但XBox 360平台似乎缺乏XNA。即便如此,我相信你的结论是正确的 - 它不是一个在前端非常流行的API。然后底层代码也非常不便携。 Crypto名称空间的很大一部分是通过P / Invoking到操作系统来完成的。我怀疑他们可以像Silverlight一样使它变得便携;但那可能还没有出现在他们的雷达上。
答案 2 :(得分:4)
我建议你使用PclCrypto。它是最简单的使用和调用平台加密而不是尝试自己实现它,这意味着更低的安全风险和更快的性能。
答案 3 :(得分:1)
“您可以在.NET Framework类库的参考主题中找到可移植类库项目支持的成员。在类的成员表中,受支持的成员旁边会显示以下可移植类库图标。”
我建议使用对象浏览器,因为我已经找到了MSDN指示的类在PCL中支持的类的示例,但框架中缺少这些类。这样的例子是Lazy
(截至2011-9-11)