[英]yamldotnet added 0x0d in desktop application but not in xamarin android
我的代码需要帮助,我将尝试使用 yamldotnet 在跨平台生成许可证文件,但 output 与桌面不同,它在 xamarin ZC31B32364CE19CA8FCD150A417ECCED5 中删除了 0x0D,需要保留它。
生成许可证的代码:
public void GenerateLicense()
{
var YamlStream = new YamlStream(
new YamlDocument(
new YamlMappingNode(
new YamlScalarNode("XXXXXXXXXXXXXLic"), new YamlMappingNode(
new YamlScalarNode("CustomerName"), new YamlScalarNode("Yo"),
new YamlScalarNode("CustomerEmail"), new YamlScalarNode("yo@yo.yo"),
new YamlScalarNode("HardwareID"), new YamlScalarNode("yo"),
new YamlScalarNode("Signature"), new YamlScalarNode()
)
)
)
);
string yaml;
var buffer = new StringBuilder();
using (var writer = new StringWriter(buffer))
{
YamlStream.Save(writer, false);
yaml = writer.ToString();
}
var checksum = StringToHex(MD5CheckSumStr(yaml));
var input = new StringReader(yaml);
YamlStream = new YamlStream();
YamlStream.Load(input);
var mapping = (YamlMappingNode)YamlStream.Documents[0].RootNode;
((YamlScalarNode)mapping.Children["XXXXXXXXXXXXXLic"]["Signature"]).Value = checksum;
using (TextWriter writer = File.CreateText("../yo.yaml"))
{
YamlStream.Save(writer, false);
}
}
我假设它使用的是平台默认行结尾。
我怀疑如果您将最后一个块更改为:
using (TextWriter writer = File.CreateText("../yo.yaml"))
{
writer.NewLine = "\r\n";
YamlStream.Save(writer, false);
}
...这将解决它。 当您写入StringWriter
时,您很可能想早点做同样的事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.