簡體   English   中英

yamldotnet 在桌面應用程序中添加了 0x0d,但在 xamarin android 中沒有

[英]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);
    }
}

點擊這里是 output 預覽圖左桌面和右 xamarin android

我假設它使用的是平台默認行結尾。

懷疑如果您將最后一個塊更改為:

using (TextWriter writer = File.CreateText("../yo.yaml"))
{
    writer.NewLine = "\r\n";
    YamlStream.Save(writer, false);
}

...這將解決它。 當您寫入StringWriter時,您很可能想早點做同樣的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM