C#:找不到SerializableAttribute

时间:2017-06-11 20:44:57

标签: c# .net xml serialization .net-core

我正在尝试在C#类库项目(最新的.NET版本)中使用 [Serializable] 属性,但无法识别

据我所知,Serializable是属于 System.Runtime.Serialization 系统的东西,但是我已经使用过它,但它仍然没有用。

我在其他项目(Unity)中使用它,但它在这里不起作用。有什么想法吗?

using System;
using System.Runtime;
using System.Xml.Serialization;
using System.Runtime.Serialization;
using System.Collections.Generic;

namespace Model{
    [Serializable]
    public struct GameSettings{
        public int Players;
    }
}

The exact error I am getting

提前谢谢

编辑:格式 Edit2:错误的屏幕截图

2 个答案:

答案 0 :(得分:2)

此属性位于System,而不是System.Runtime.Serialization

namespace System
{
  /// <summary>Indicates that a class can be serialized. This class cannot be inherited.</summary>
  [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Delegate, Inherited = false)]
  [ComVisible(true)]
  public sealed class SerializableAttribute : Attribute
  {
      //...
  }
}

您确定引用了mscorlib.dll吗? This question可能对你很有兴趣。

答案 1 :(得分:2)

https://apisof.net/catalog/System.SerializableAttribute显示[Serializable]在.NET Core 1.0和1.1以及.NET Standard 1.6的System.Runtime.Serialization.Formatters包中定义。然后,它转移到.NET Core 2.0的System.Runtime和.NET Standard 2.0的netstandard monolith。

如果您只关心能够编译共享代码,可以尝试添加包引用。但是What is the equivalent of [Serializable] in .NET Core ? (Conversion Projects)已经回答说二进制序列化器不在.NET Core 1.x中(不确定它的2.0状态......但是因为2.0在预览中你总是可以尝试一下)。