2016-09-20 8 views
0

Я использую ClearScript для компиляции JavaScript, а затем я хотел бы сериализовать его для хранения в SQL. Но он отмечен как не Сериализуемый, что мне делать?Как сериализовать скомпилированный V8Script в Clearscript?

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

V8, скомпилированный скрипт привязан к изолята, например, создавшего его, так что не имеет смысла сериализовать его. Вы не можете повторно использовать его в другом процессе или даже с другим изолятом в том же процессе. Есть дополнительная информация here и here.

+0

Ну ладно, спасибо в любом случае. – Bill

 Смежные вопросы

  • Нет связанных вопросов^_^