Я пытаюсь использовать MessagePack для сериализации моих объектов, но всякий раз, когда я пытаюсь запустить сериализацию, я получаю ошибку Unhandled Exception.System.TypeLoadException: доступ запрещен при использовании MessagePack
Вот мой код:
CSCDP_TCPClient.cs
using System.Text;
using System.Threading.Tasks;
using System.Net.Sockets;
using System.Diagnostics;
using System.IO;
using MsgPack;
using MsgPack.Serialization;
namespace CSCDPApp
{
class CSCDP_TCPClient
{
public void Connect(string server, int portno, Script Script)
{
var serializer = MessagePackSerializer.Get<Script>();
var tempstream = new MemoryStream();
serializer.Pack(tempstream, script);
tempstream.Position = 0;
var deserializedObject = serializer.Unpack(tempstream);
Debug.WriteLine("Same object? {0}", Object.ReferenceEquals(script, deserializedObject));
}
}
}
Script.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CSCDPApp
{
class Script
{
public string cardID;
public string time;
public string device;
public string command;
public Script()
{
//Parameterless Constructor for serialization
}
public Script(string cardID, string time, string device, string command)
{
this.cardID = cardID;
this.time = time;
this.device = device;
this.command = command;
}
}
}
И я просто звоню его в основном с:
CSCDP_TCPClient tcpclient = new CSCDP_TCPClient();
Script tempscript = new Script("test1","test2","test3","test4");
tcpclient.Connect("0.0.0.0",1,tempscript);
И вот ошибка Я получаю:
Unhandled Exception: System.TypeLoadException: Access is denied: 'MsgPack.Serial
ization.MessagePackSerializer`1[CSCDPApp.Script]'.
at System.Reflection.Emit.TypeBuilder.TermCreateClass(RuntimeModule module, I
nt32 tk, ObjectHandleOnStack type)
at System.Reflection.Emit.TypeBuilder.CreateTypeNoLock()
at System.Reflection.Emit.TypeBuilder.CreateType()
at MsgPack.Serialization.EmittingSerializers.FieldBasedSerializerEmitter.Crea
teConstructor[T]()
at MsgPack.Serialization.EmittingSerializers.SerializerEmitter.CreateInstance
[T](SerializationContext context)
at MsgPack.Serialization.EmittingSerializers.ILEmittingSerializerBuilder`2.<>
c__DisplayClass5a.<CreateSerializerConstructor>b__59(SerializationContext contex
t)
at MsgPack.Serialization.AbstractSerializers.SerializerBuilder`3.BuildSeriali
zerInstance(SerializationContext context)
at MsgPack.Serialization.AutoMessagePackSerializer`1..ctor(SerializationConte
xt context, ISerializerBuilder`1 builder)
at MsgPack.Serialization.MessagePackSerializer.CreateInternal[T](Serializatio
nContext context)
at MsgPack.Serialization.SerializationContext.GetSerializer[T](Object provide
rParameter)
at MsgPack.Serialization.MessagePackSerializer.Get[T](SerializationContext co
ntext, Object providerParameter)
at CSCDPApp.CSCDP_TCPClient.Connect(String server, Int32 portno, Script scrip
t) in d:\TFS\MSVC 2013_CTSDev1\CommonComponents\sdnet\tools\CSCDPService\CSCDPAp
p\CSCDP_TCPClient.cs:line 21
at CSCDPApp.Program.Main(String[] args) in d:\TFS\MSVC 2013_CTSDev1\CommonCom
ponents\sdnet\tools\CSCDPService\CSCDPApp\Program.cs:line 64
У меня есть проект моей визуальной студии в моем диске D: и я проверил, что разрешения правильные. У меня есть MessagePack.dll в том же каталоге, что и все мои скомпилированные исполняемые файлы, и ссылка связана. Есть ли что-нибудь, что я могу потерять?