我一直在使用CsvHelper library for .NET,并且一直在100%工作,直到将应用程序移到新服务器上为止。在新服务器上,生成了CSV文件后,由于某种原因,文件中的定界符/逗号丢失了。
我没有更改代码中的任何内容,我只是将应用程序移至新服务器。
两台服务器上的Dotnet Core版本与2.2.103完全相同。
这是两台服务器的Ubuntu版本:
正确生成CSV文件的服务器:
服务器CSV文件缺少逗号/分隔符:
这里是生成的正确和不正确的CSV文件中的差异的示例:
关于为什么CSV文件可能缺少逗号/分隔符的任何想法?可能是Ubuntu版本不匹配,还是需要在新的Ubuntu服务器上设置格式设置?
编辑:
写入CSV文件的功能:
public static void CreateDeliveryReportCsvFile(string filePath, List<DatabaseFunctions.ProblemModem> lineItems)
{
using (var writer = new StreamWriter(filePath))
using (var csv = new CsvWriter(writer))
{
csv.WriteRecords(lineItems);
}
}
ProblemModem
类别:
public class ProblemModem
{
public string Id { get; set; }
public string Name { get; set; }
public string CellNumber { get; set; }
public DateTime SentDate { get; set; }
public DateTime? DeliveredDate { get; set; }
}
发生这种情况的原因是CsvHelper库做出了将CultureInfo.CurrentCulture.TextInfo.ListSeparator
用作default separator而不是','
的问题,这一决定有些可疑。这意味着默认分隔符取决于计算机的配置以及所看到的已安装操作系统的版本。您可能已经知道了,可以通过显式分配定界符来解决此问题。