我正在编写一个Window服务并在CoreOnly / net30中引用protobuf-net.dll。我正在使用以下代码:
MyJob job;
using (var file = File.OpenRead("myjob.bin"))
{
job = Serializer.Deserialize<MyJob>(file);
}
我得到的错误是:'ProtoBuf.Serializer'不包含'反序列化'的定义
我错过了什么?
答案 0 :(得分:1)
使用“完整”。
如果您使用的是CoreOnly,那么您正在使用Google代码下载。在zip的根目录是一个名为“我需要什么文件.txt”(或类似的东西)的文件,它解释了CoreOnly是什么,以及如何使用它。简短版本是它不包括元编程层,并且旨在与预编译工具一起使用。直接在Serializer上的方法与默认的基于元编程的模型相关联 - 因此在CoreOnly中不可用。
CoreOnly的主要用途是用于无法进行元编程的移动设备等环境。实际上,使用NuGet下载通常更容易,它只包含完整版。
然而,我很想添加这些方法,但用[Obsolete("some text", true)]
解释所有这些 - 以避免将来混淆。