Не удалось разрешить сборку для BinaryFormatter в C#

Я пытаюсь сериализовать структуру с возможностью ее десериализации позже. Используя предыдущий пост о stackru, я реализовал метод, показанный в этой статье, в следующем коде...

using Neo.SmartContract.Framework;
using Neo.SmartContract.Framework.Services.Neo;
using System;
using System.Numerics;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;


namespace tcardebug
{
    public class Contract1 : SmartContract
    {
        public static void Main(params object[] args)
        {
            Driver driver = (Driver)args[0];
            string license = (string)args[1];
            AddDriver(driver.first, driver.last, license);
            Runtime.Notify("Driver Added", driver, license);
        }

        [Serializable]
        public struct Driver
        {
            public string first;
            public string last;
            //public string license;

            public Driver(string _first, string _last)
            {
                first = _first;
                last = _last;
                // license = _license;
            }
        }

        private static byte[] ObjectToByteArray(Object obj)
        {
            if (obj == null)
                return null;

            BinaryFormatter bf = new BinaryFormatter();
            using (MemoryStream ms = new MemoryStream())
            {
                bf.Serialize(ms, obj);

                return ms.ToArray();
            }

        }

        private static T ByteArrayToObject<T>(byte[] arrBytes)
        {
            MemoryStream memStream = new MemoryStream();
            BinaryFormatter binForm = new BinaryFormatter();
            memStream.Write(arrBytes, 0, arrBytes.Length);
            memStream.Seek(0, SeekOrigin.Begin);
            T obj = (T)binForm.Deserialize(memStream);
            return obj;
        }

        public static bool AddDriver(string first, string last, string license)
        {

            Driver driver = new Driver(first, last);

            //byte[] keyBytes = Encoding.ASCII.GetBytes(license);
            byte[] valueBytes = ObjectToByteArray(driver);
            Storage.Put(Storage.CurrentContext, license, valueBytes);

            return true;
        }
    }

    }

Это дает мне следующую ошибку...

    CONVERTTASK : Convert error : System.Exception: error:System.Byte[] tcardebug.Contract1::ObjectToByteArray(System.Object)::IL_000D Newobj System.Void System.Runtime.Serialization.Formatters.Binary.BinaryFormatter::.ctor() ---> Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly: 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
1>     at Mono.Cecil.BaseAssemblyResolver.Resolve(AssemblyNameReference name, ReaderParameters parameters)
1>     at Mono.Cecil.BaseAssemblyResolver.Resolve(AssemblyNameReference name)
1>     at Mono.Cecil.DefaultAssemblyResolver.Resolve(AssemblyNameReference name)
1>     at Mono.Cecil.MetadataResolver.Resolve(TypeReference type)
1>     at Mono.Cecil.MetadataResolver.Resolve(MethodReference method)
1>     at Mono.Cecil.ModuleDefinition.Resolve(MethodReference method)
1>     at Mono.Cecil.MethodReference.Resolve()
1>     at Neo.Compiler.MSIL.ModuleConverter._ConvertNewObj(OpCode src, NeoMethod to)
1>     at Neo.Compiler.MSIL.ModuleConverter.ConvertCode(ILMethod method, OpCode src, NeoMethod to)
1>     at Neo.Compiler.MSIL.ModuleConverter.ConvertMethod(ILMethod from, NeoMethod to)
1>     --- End of inner exception stack trace ---
1>     at Neo.Compiler.MSIL.ModuleConverter.ConvertMethod(ILMethod from, NeoMethod to)
1>     at Neo.Compiler.MSIL.ModuleConverter.Convert(ILModule _in)
1>     at Neo.Compiler.Program.Main(String[] args)
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========

Ранее я забыл [Serializable] над моей структурой, но добавление этого не помогло. Есть ли какие-то шаги, которые я пропускаю?

0 ответов

Другие вопросы по тегам