【发布时间】:2012-07-27 09:11:00
【问题描述】:
我想更改当前环境的默认 Environment.NewLine 字符。
我有一个将消息写入控制台的独立应用程序。当核心框架在控制台环境中工作时,新行是 \r\n。当我将核心框架移动到 Windows 服务中时,Environment.NewLine 更改为“\n”。
我希望能够将控制台更改为始终使用“\r\n”,因为当我将控制台的输出重定向到文件时,从示例记事本读取时输出没有“windows 换行符”。
我希望 Console.WriteLine 可以随时使用 \r\n。
编辑:
我正在重定向 Console.out:
ConsoleOut = File.AppendText(fileName);
ConsoleOut.AutoFlush = true;
Console.SetOut(ConsoleOut);
Console.SetError(ConsoleOut);
每个 Console.WriteLine 或 Console.Write 都会发送到一个文件,但正如我所说,我在 Windows 服务和独立 Windows 环境中遇到不同的行为。
【问题讨论】:
-
这两个陈述是矛盾的:“当核心框架在控制台环境中工作时,新行是\r\n”,和“我希望Console.WriteLine 可以在任何时候使用\r\n想要”。
-
Environment.NewLine是一个常数。 dotnetperls.com/newline -
为什么如果我从 Windows 服务运行相同的库,Console.WriteLine 会输出我 \n 而不是 \r\n。我将 Console.out 重定向到一个文件。相同的代码在两个不同的环境中运行。
-
我刚刚从我的一项服务中检查了我的日志;它绝对是 CRLF,即字节 13、10。我认为您需要 a:仔细检查您的文件,b:检查您以后没有更改它们(例如,在通过 FTP 传输期间),以及 c:提供一个示例实际上显示它生成 CR 或 LF 但不生成 CRLF
-
我会深入检查它们。谢谢。您在代码示例方面给了我很大的帮助,但我仍然不知道问题出在哪里,所以我会等待分配答案,直到找到解决方案。
标签: c# .net newline environment