我有一个类库,其中的类标记为[可序列化]。如果直接引用该项目,则可以使用BinaryFormatter序列化该类:
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms,obj);
var data = ms.ToArray();
但是,如果我通过nuget发布类库,它将失去[Serializable]属性,并且无法再使用BinaryFormatter转换为字节数组。
创建.nupkg时,是否可以保留AS-IS类?目前,我只是在构建时使用Visual Studios Generate Nuget包。
进一步调查后,让我澄清一下发现。
*如果您具有.net472 Web API和.net472类库,并且通过nuget发布类库,那么一切正常。我已经使用BinaryFormatter序列化了一个标有[Serializable]属性的对象,并将其成功发送到服务器并能够反序列化。
*如果您具有.netstandard 2.0库,并且将其发布到.netstandard控制台项目中,并尝试使用binaryformatter对其进行序列化,则您不会将该类标记为可序列化(即使已标记)。
*如果您有一个.net472库,并且将其发布到netstandard 2.0控制台应用程序中,则我无法序列化该类,但是由于其他原因,如果我收到错误消息,则该错误:
程序集'System.Private.CoreLib,版本= 4.0.0.0,区域性=中性,PublicKeyToken = 7cec85d7bea7798e'中的类型'System.Text.Encoding'未标记为可序列化。'
简而言之,如果您真的需要二进制序列化,除了客户端和服务器都支持完整的框架库而不是内核/网络标准之外,我不知道其他任何选择。