【问题标题】:Can't find `DataProtectionScope` and `ProtectedData` classes in System.Security.Cryptography在 System.Security.Cryptography 中找不到“DataProtectionScope”和“ProtectedData”类
【发布时间】:2021-01-16 01:01:35
【问题描述】:

我已经按照this article 中的说明引用了文件System.Security.dll,但根据我的IDE,可以安全地删除using System.Security.Cryptography; 行,因为它没有被使用。

同一个 IDE 告诉我 DataProtectionScopeProtectedData 出现错误。这些应该在 that 命名空间中。但是,当我点开包裹时,我看不到它们。

文章错了吗?如何访问这两个类?

【问题讨论】:

  • 应该可以。您使用的是哪个版本的 .NET Framework?适用于哪个平台?你怎么做参考? PS:DataProtextScope是什么?
  • 没有你的代码我们应该如何重现这个?
  • @CodesInChaos 什么代码?我正在输入System.Security.Cryptography.,在我得到的列表中,没有DataProtectionScopeProtectedData。所以,我猜代码是:System.Security.Cryptography. 但这并不是一个新信息。
  • 如果您看到项目的 References 文件夹下列出了 System.Security 程序集,那肯定可以工作。
  • 这些天你可以从 NuGet 获得这个程序集:nuget.org/packages/System.Security.Cryptography.ProtectedData

标签: c# visual-studio-2010 cryptography


【解决方案1】:

正如@Coral Doe 在@Dave Lucre 下的评论中提到的那样:

“有一个类似的问题,这很有效。使用 System.Security.Cryptography;在我为特定框架引用 System.Security.dll 之前,我没有 [显示] [ProtectedData] 和 ProtectedMemory。”

这为我解决了这个问题。具体来说,我执行了以下步骤:

  1. 在 Visual Studio 中打开项目。
  2. 在解决方案资源管理器中右键单击项目名称,然后选择“属性”。
  3. 单击左侧的“参考”选项卡。
  4. 点击添加按钮。
  5. 单击 .NET 选项卡。
  6. 选择 System.Security 并单击 OK 添加引用。

希望这会有所帮助。

【讨论】:

  • 这应该是答案。我总是忘记这样做。
  • 是的,这就是答案。非常感谢。
  • 赞成不要让我重新安装整个视觉工作室
  • @George Brian,同样的事情也发生在我身上(stackoverflow.com/questions/46205937/…)。这两个可能是投票圈的一部分。
  • 适用于 .NET 4.6.2 但不适用于 .NET Core。
【解决方案2】:

我在这里引用了 System.Security.dll:C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Security.dll

添加了using System.Security.Cryptography;,我可以同时看到DataProtectionScopeProtectedData

我的目标是 .net 4.0 完整框架(不是客户端配置文件)。

你的目标是什么框架?

【讨论】:

  • 遇到了类似的问题,这很有效。 using System.Security.Cryptography; 没有向我展示 ProtectdDataProtectedMemory,直到我为特定框架引用了 System.Security.dll
【解决方案3】:

除了System.Security.Cryptography,我还必须添加这个 NuGet 包。

https://www.nuget.org/packages/System.Security.Cryptography.ProtectedData/

在那之后,System.Security.Cryptography 被“使用”了。

【讨论】:

    【解决方案4】:

    正如@Dave Lucre 所问,您的应用程序的目标是什么框架?默认情况下,Visual Studio 创建所有新应用程序以使用客户端配置文件(我认为这很糟糕),如果您不专门将其更改回来,它会导致各种麻烦。看看那个,然后看看我们从那里去哪里。

    【讨论】:

    • 我同意将主要目标平台选择为客户档案是近乎疯狂的。我也检查过。我在任何地方都没有这些课程。
    【解决方案5】:

    删除引用 System.Security.Cryptography 并重新添加。

    它适用于我的情况。

    【讨论】:

      【解决方案6】:

      对不起,我知道这是一篇很老的帖子,但我现在遇到了这个问题,我发现的唯一解决方法是:

      1. 按照George Brian's answer 中提到的步骤进行操作
      2. 使用System.Security.Cryptography.DataProtectionScope scope = System.Security.Cryptography.DataProtectionScope.LocalMachine; 而不是DataProtectionScope scope = DataProtectionScope.LocalMachine;

      【讨论】:

        【解决方案7】:

        这可能是一记耳光,因为您可能已经尝试过(而您没有尝试过,您可能应该得到一个)。如果重新安装整个 IDE 会发生什么?我的意思是真的整个的事情。删除框架,VS,删除文件,去偏执并清理垃圾桶,切换到不同的安装目录等。问题仍然存在吗?

        我知道它不能解释为什么会发生这种情况,但在这个阶段我猜你最感兴趣的是如何解决问题。

        如果您可以使用备用计算机 - 为什么不在 那台 计算机上安装 VS 并查看是否可以重现错误。如果不是,那么您的主机有问题,您可能永远不会知道发生了什么。

        我在这里强调的是,这只是一个一般性建议列表,每个程序员在没有任何理智或逻辑似乎都行不通时应该依赖这些建议。是的,我确实讨厌电脑。我喜欢编程,但我讨厌电脑。他们就像拿着键盘的小恶魔……

        【讨论】:

        • 我真的,真的不想重新安装那些东西。但是,我什至不想自己开发数据加密器......我会试试看,从最不方便的一个开始......
        • 这非常令人沮丧 - 问题已经消失了,但我不知道为什么......或者它是如何出现的。大家觉得呢?
        • 问题消失了,因为您消除了问题的原因。我猜您想知道是什么原因。你可能永远不会知道。特别是如果您无法重现该行为。至少,我很高兴这个问题得到了解决。另外,我认为其他回复来得更快,也许其中一个比我更值得+50。您可以考虑将赏金转给其他人。 :)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多