2015년 11월 12일 목요일

[Spotfire Developer] Can't not save dxp file with Library Item on Spotfire Client.


Developed CustomTool using Spotfire 7.0 API , the CustomTool acting is clear.
But when the dxp file save as Library item , occured error such as below. 


[ Error Message on Spotfire Client ]
Error message: Could not publish Baseball_test.

SerializationException at Spotfire.Dxp.Framework:
Type 'SpotfireDevTools.TwoWayAnova.CustomNode.TWACustomNode' is not serializable. The type is not marked with a 'System.SerializableAttribute'.
Object reference chain leading to the fault (closest reference first):

    Spotfire.Dxp.Application.CustomNodes.Nodes[0]
    Spotfire.Dxp.Application.Document.CustomNodes
 (HRESULT: 8013150C)

Stack Trace:
   at Spotfire.Dxp.Framework.Persistence.Xml.SerializationFormatter.Serialize(Object graph)
   at Spotfire.Dxp.Framework.Persistence.Xml.XmlFormatter.Serialize(Stream serializationStream, Object graph, StreamingContext context, PrunerBase pruner)
   at Spotfire.Dxp.Framework.Persistence.PersistenceManager.SerializeForPersistence(Stream serializationStream, Object graph, IServiceProvider serviceProvider)
   at Spotfire.Dxp.Framework.Persistence.PersistenceManager.<>c__DisplayClassd.<Save>b__6()
   at Spotfire.Dxp.Framework.ApplicationModel.Progress.ExecuteSubtask(String title, ProgressOperation operation)
   at Spotfire.Dxp.Framework.Persistence.PersistenceManager.Save(DocumentTypes documentType, DocumentNode doc, IDocumentSaveSettings settings, Stream targetStream)
   at Spotfire.Dxp.Framework.Persistence.PersistenceManager.Save(DocumentTypes documentType, DocumentNode doc, IDocumentSaveSettings settings, String fileName)
   at Spotfire.Dxp.Application.AnalysisApplication.SaveAs(LibraryEntry entry, Document document, LibraryItemMetadataSettings metadataSettings, DocumentSaveSettings saveSettings)
   at Spotfire.Dxp.Application.AnalysisApplication.SaveAs(LibraryEntry entry, LibraryItemMetadataSettings metadataSettings, DocumentSaveSettings saveSettings)
   at Spotfire.Dxp.Forms.Application.FileUserActions.<>c__DisplayClassb.<SaveAsLibrary>b__9()
   at Spotfire.Dxp.Forms.Application.FormsProgressService.ProgressThread.DoOperationLoop()

[Solution]
in the Class , write annotation. and rerun. then can see nomal acting. 
============example code=========================
 [Serializable()] 
 [PersistenceVersion(1, 0)]
 public class TWACustomNode{}