自动生成的代码在visual studio 2015中引发了大量警告

时间:2015-09-30 07:55:50

标签: c# visual-studio visual-studio-2015

我最近将我的视觉工作室从2013年升级到2015年。现在当我打开我的项目时,我在使用代码CA2235的自动生成代码中看到了很多警告。

以下是警告之一:

  

警告CA2235字段extensionDataField是WebServiceInputTrafficFinesInquiry类型的成员,它是可序列化的,但类型为System.Runtime.Serialization.ExtensionDataObject,不可序列化

     

SimpayRobot C:\ Users \ Admin \ Desktop \ Projects \ SimpayRobot_SVN \ trunk \ SimpayRobot \ SimpayRobot \ Service References \ RahvarService \ Reference.cs 22

     

无法直接序列化的所有字段都应具有NonSerializedAttribute。具有Seri​​alizableAttribute的类型不应具有不具有Seri​​alizableAttribute的类型字段,除非字段使用NonSerializedAttribute标记。

该项目工作正常,但它使编程不舒服。我不知道该怎么做。它是自动生成的代码,我不想编辑它。

如何摆脱这些警告? 还有一件事:警告是因为我在项目中添加了肥皂服务参考。

更新: 我不想压制警告!我为什么要这样做?我想解决问题。

这是第22行:(它是自动生成代码的一部分。)

[System.NonSerializedAttribute()]
private System.Runtime.Serialization.ExtensionDataObject extensionDataField;

3 个答案:

答案 0 :(得分:1)

当我开始使用FxCops检查源代码时遇到了同样的问题。通过这篇文章开始我的调查,似乎在reference.cs中的CA2235警告(由WCF服务自动生成)被归类为将在Visual Studio Update 3中解决的问题(有关详细信息,请参阅此链接https://github.com/dotnet/roslyn/issues/3898

此致 JRB

答案 1 :(得分:0)

您的字段/属性ExtensionDataObject的类型不可序列化,但它是该类的一部分,标记为serializable

您应该将ExtensionDataObject标记为Serializable,或使用NonSerializedAttribute进行装饰。

例如,如果您尝试将对象存储在会话中,它将无法序列化所有属性,并且可能会引发异常。

答案 2 :(得分:0)

深入了解警告。它告诉您Field(可能是隐式)标记为可序列化,而其类型不可序列化。它告诉您将[NonSerialized]添加到该字段。

你可以像这样解决这个问题(我只是猜测你的代码可能是什么样子):

[Serializable]
public class WebServiceInputTrafficFinesInquiry 
{
    // ...

    [NonSerialized]
    ExtensionDataObject extensionDataField;

    // ...
}

有关详细信息,请参阅https://msdn.microsoft.com/en-us/library/ms182349.aspx