命名空间“System.Security.Cryptography”中不存在类型或命名空间名称“Xml”

The type or namespace name `Xml' does not exist in the namespace `System.Security.Cryptography'

我必须阅读带有

的签名 xml
Using System.Security;
System.Security.Cryptography.Xml.SignedXml signedXml = new System.Security.Cryptography.Xml.SignedXml(lic);

首先Unity/VS投诉

VS > Error 11 The type or namespace name Xml' does not exist in the namespaceSystem.Security.Cryptography'. Are you missing an assembly reference?

所以我在Visual Studio中添加了对System.Security的引用(C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Security.dll )...但是 Unity 一直抱怨

error CS0234: The type or namespace name Xml' does not exist in the namespaceSystem.Security.Cryptography'. Are you missing an assembly reference?

然后我尝试直接复制资产文件夹中的'System.Security.dll'...但仍然是相同的消息!

请问我做错了什么?必须做什么? 非常感谢!

大多数 System.Security.Cryptography 命名空间被排除在统一的默认 .Net 2.0 Subset API 之外。很可能 .Xml 也被剥离了。所以执行以下操作之一:

  1. 在 Unity 中点击 Ctrl/Cmd + Shift + B 打开构建菜单,点击 player settings。在检查器中找到默认设置为 .Net 2.0 SubsetAPI Compatability Level。将其更改为 .Net 2.0,其中包括先前剥离的其余部分 classes/namespaces.
  2. 如果错误仍然存​​在,请确保您复制到 Unity 中的 .dll 来自 .net 2.0 框架。 Unity 无法导入针对高于 .net 2.0
  3. 的框架的库

这是从统一的SubsetAPI中排除的: https://docs.unity3d.com/412/Documentation/ScriptReference/MonoCompatibility.html

抱歉,我找不到该文档的当前版本

编辑:

如@user2737085 所建议的那样 - 您还必须将 mcs.rsp 文件添加到 Assets 文件夹中。 mcs.rsp 应该是包含以下行的文本文件:

-r:System.Security.dll