javascript
  • c#
  • serialization
  • v8
  • clearscript
  • 2016-09-20 4 views 0 likes 
    0

    ClearScript를 사용하여 일부 JavaScript를 컴파일하고 SQL에 저장하기 위해 직렬화하려고합니다. 그러나 Serializable이 아닌 것으로 표시되어 있는데 어떻게해야합니까?클리어 스크립트에서 컴파일 된 V8Script를 직렬화하려면 어떻게합니까?

    V8ScriptEngine engine = new V8ScriptEngine(); 
    V8Script compiled = engine.Compile("var a = 'test'"); 
    using (MemoryStream ms = new MemoryStream()) 
    { 
        new BinaryFormatter().Serialize(ms, compiled); 
        string compiledString = Convert.ToBase64String(ms.ToArray()); 
    } 
    

    는이 오류 얻을 :

    Additional information: Type 'Microsoft.ClearScript.V8.V8ScriptImpl' in Assembly 'ClearScriptV8-32, Version=5.4.6.0, Culture=neutral, PublicKeyToken=935d0c957da47c73' is not marked as serializable. 
    
    +1

    V8의 관점에서 볼 때 직렬화하는 것은 의미가 없습니다. V8 내부에 많은 상태가 필요하기 때문에 나중에 다시 사용할 수있는 것이 아닙니다. 어떤 개념이 C#에 노출되어 있는지 확실하지 않지만 그 내용은 후드에서 진행됩니다. – xaxxon

    +0

    또한 특정 항목을 미리로드 한 후에 V8 격리/컨텍스트의 상태를 스냅 샷하는 방법이 있지만 C# 직렬화와 관련되지는 않습니다. 즉 V8 항목입니다. 그 (네이티브 API 용) 문서는 다음 위치에 있습니다. http://v8project.blogspot.com/2015/09/custom-startup-snapshots.html – xaxxon

    답변

    2

    V-8 컴파일 된 스크립트를 생성 한 분리 인스턴스에 연결되어, 그래서 그것을 직렬화 이해되지 않는다. 다른 프로세스에서 재사용 할 수 없으며 동일한 프로세스에서 다른 격리 된 프로세스와 재사용 할 수 없습니다. 더 많은 정보가 herehere입니다.

    +0

    어쨌든 고마워요. – Bill

     관련 문제

    • 관련 문제 없음^_^