C# 在Visual Studio中更改CR/LF输出类型

C# 在Visual Studio中更改CR/LF输出类型,c#,visual-studio-2008,carriage-return,C#,Visual Studio 2008,Carriage Return,我在VisualStudio2008中有一个c#项目,它在构建时会在临时目录中输出一组文件,供其他程序使用,如JsTestDriver、JsCoverage等(都与Unix有关) 问题是,每次生成文件时,它们似乎都包含奇怪的回车符/换行符,这会打乱下一步将使用它们的程序 我目前正在做的是手动创建一个记事本文件,将其重命名为其他名称,然后复制并粘贴生成文件的全部内容(并保存)以解决此问题。当然,这是一件乏味的事情,我不喜欢做(最终我希望整个过程自动化) 所以我的问题是:如何让VisualStudi

我在VisualStudio2008中有一个c#项目,它在构建时会在临时目录中输出一组文件,供其他程序使用,如JsTestDriver、JsCoverage等(都与Unix有关)

问题是,每次生成文件时,它们似乎都包含奇怪的回车符/换行符,这会打乱下一步将使用它们的程序

我目前正在做的是手动创建一个记事本文件,将其重命名为其他名称,然后复制并粘贴生成文件的全部内容(并保存)以解决此问题。当然,这是一件乏味的事情,我不喜欢做(最终我希望整个过程自动化)

所以我的问题是:如何让VisualStudio输出正确/正确的CR/LF,这样我就不需要再进行手动过程了


如果以上内容过于模糊,我很乐意澄清。提前感谢。

是的,现在有点太模糊了-您应该提供:

  • 有关如何写出文件的更多详细信息
  • 更多关于文件中具体内容的详细信息。使用十六进制编辑器来找出这一点
改变行尾的最简单方法可能就是在代码中明确说明它。例如,而不是:

output.WriteLine(foo);

。。。可能将其封装在您自己的类中以使其更容易(因此您可以拥有自己的
WriteLine
方法,该方法可能会做正确的事情)


编辑:我一直假设是您自己的代码编写文件。如果不是这样,最简单的解决方案可能是找到或编写一个工具来转换文件,并将其作为后期构建步骤。我确信存在这样的工具(我想不久前有一个叫做dos2unix的工具),但编写自己的工具可能与找到一个完全符合您需要的工具一样简单。

生成文件的是什么?是构建输出,如果是,是什么工具?这是某种后期构建事件吗?@Jon Skeet:是的,你是对的,代码不是我自己写的。在您回答之前,我假设CR/LF来自VS,所以我正在寻找一个选项,将它们转换为linux兼容的格式。现在来考虑一下,它们应该来自生成文件的代码(最初我认为这是某种自定义构建过程)。生成的文件看起来与Notepad++中的其他文件相同。尚未尝试使用十六进制编辑器。看来我得查一下逻辑,看看有没有可疑的地方。谢谢。它可能只是使用TextWriter.WriteLine,它将使用系统默认的换行符(即Windows上的CR/LF)。@Jon Skeet:我发现生成的文件是使用msbuild中的copy命令创建的,例如。“源文件”本身就像其他文本文件一样创建。CR/LF似乎没有手动编码。另一方面,奇怪的是,如果我复制生成文件的全部内容,并将其粘贴并保存到记事本中,问题就会消失。。。我在Windows中完成上述所有操作。我想知道CR/LF现在是否真的是个问题,尽管我看不出还有什么可疑的…@Jon Skeet:我发现了问题。结果证明文件的编码有问题。使用正确编码的字符,一切正常。谢谢
output.Write(foo);
// Here LineTerminator would be a constant - or you could make
// it a variable somewhere
output.Write(LineTerminator);