C# NetStandard1.4不允许用[DataContract]装饰类

C# NetStandard1.4不允许用[DataContract]装饰类,c#,datacontract,.net-standard,.net-standard-1.4,C#,Datacontract,.net Standard,.net Standard 1.4,当我试图在.netstandard1.4项目中用[DataContract]装饰类时 [DataContract] [KnownType(typeof(SingleSensorEvent))] [KnownType(typeof(BatchSensorEvent))] public abstract class WebItemBase { // details left out } 我得到以下编译错误 1> cs(7,6,7,18):错误CS0653:无法应用属性类 “DataCont

当我试图在.netstandard1.4项目中用
[DataContract]
装饰类时

[DataContract]
[KnownType(typeof(SingleSensorEvent))]
[KnownType(typeof(BatchSensorEvent))]
public abstract class WebItemBase
{
    // details left out
}
我得到以下编译错误

1> cs(7,6,7,18):错误CS0653:无法应用属性类 “DataContract”,因为它是抽象的

1> WebItemBase.cs(8,6,8,15): 错误CS0012:类型“Attribute”是在不可用的程序集中定义的 未引用。必须添加对程序集“mscorlib”的引用, 版本=4.0.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089'


有没有办法在NETStandard 1.4中使用数据契约?

您需要添加对
System.Runtime.Serialization.Primitives
NuGet包的引用,以使用
DataContractAttribute
。它将在
netstandard2.0
中自动提供:

dotnet add package System.Runtime.Serialization.Primitives

你做了一些你不应该做的事情来得到这样的错误。不管是什么,最好不要强迫我们猜测,一定要再次撤销。相反,您需要添加对Nuget包System.Runtime.Serialization v4.3.0的引用。请注意,您的项目现在可能无法移植到您想到的每个平台,YMMV。@HansPassant将类移动到新项目中,并添加您建议的nuget包。我的时间到了,所以我以后会再深入挖掘。我想我在项目中弄坏了什么。非常感谢你的指点!如果您放弃它作为答案,我会接受它。@HansPassant,鉴于我尝试使用类型X(在.NET标准中也可以使用的任何普通.NET类型),您能告诉我一个确定的方法来确定使用它需要针对哪个.NET标准最低版本,以及要添加引用的nuget包吗?在处理我自己的类库时,我发现很难找到.NET标准的这一部分,但我也很确定我不知道去哪里找。@LasseVKarlsen使用Nuget包的名称是类所在的程序集名称