[英]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.