Visual Studioは一貫性のない行末を正規化するとはどういう意味ですか?


238

Visual Studioは時々私に言っています:

次のファイルの行末は一貫していません。行末を正規化しますか?

次に、Windows、Mac、Unix、およびいくつかのUnicode規格など、さまざまな標準または何かのドロップダウンが表示されます。

これはどういう意味Yesですか?クリックするとどうなりますか?


Visual Studioでも同じメッセージが表示されますが、それが参照する「ファイル」は実際にはフォルダーです。どういう意味ですか?!
大佐パニック

Delphiを使用していますが、特定の拡張子(* .cまたは* .hなど)のすべてのファイルについて、ディレクトリ全体または一連のディレクトリを再帰的に実行するための小さなユーティリティを作成しましたが、このユーティリティはすべてのWindowsソースコードで機能しますファイル。ソースコードとバイナリ(exe)が含まれています。余分な改行(つまり、改行がない)または余分な改行(つまり、改行がない)がある行を報告します。 docs.google.com/file/d/0B07SrKpE8ErmbHZ1SWkxT3RLczA/…–
Warren P

1
によって引き起こされる可能性がありgitます。参照:stackoverflow.com/questions/170961/...
ジェス

2
ドロップダウンに、「ファイル/プロジェクトの残りの部分から最も一般的な行末のタイプを優先する」というオプションがあるはずです。
MetaGuru

回答:


213

通常それが意味することは、キャリッジリターン/ラインフィードのペア以外の何かで終わる行があることです。これは、Webページからコードエディターにコピーして貼り付けるときによく発生します。

行末を正規化するとは、すべての行末文字が一貫していることを確認することです。これは、1行が末尾で終わるのを防ぎ\r\n、別の行が\rorで終わるのを防ぎ\nます。1つはWindowsのラインエンドペアですが、その他は通常MacまたはLinuxファイルに使用されます。

Visual Studioで開発しているので、ドロップダウンから「Windows」を選択することは明らかです。:-)


1
改行せずに行を終了するにはどうすればよいですか?
MetaGuru、2009

23
では、なぜフリップがビジュアルスタジオがラインの終わりを気にするのか、それは明らかにすべての異なるタイプを認識し、それはただ幸せで黙っているはずです。
MetaGuru、2009

53
ああ、でもVSを使ってWindows以外の何かを修正しているとしたらどうでしょう?LinuxユーティリティまたはC / C ++に直接対応したもので、CRLFを追加したくない場合のクイックフィックス ちょっと待って、MSにあなたの心を読んで、どちらを使うべきかを知ってもらいたいですか?<g> VSチームはどちらの方法でも間違っていますね。シーッシュ!
ケンホワイト

6
Linuxでコンパイルする予定のいくつかのファイルを編集していて、コンパイラーが必要とする正確な行末がない場合、コンパイラーがチョークして死ぬことを知っているなら、そうだね。 VS選択させていただきありがとうございます...ありがとうございます!
MetaGuru 2010

19
問題は、VSがUnixの行末を処理できないことではありません-できます。警告は、行末が一貫していないことを示しています。つまり、ファイル内の一部の行はCRLFであり、一部はLFです。VSはこれに対応しますが、ツールチェーン内の他のアプリケーションは対応しない可能性があるため、警告が表示されます。これを気にしない場合は、警告をオフにしてください。[オプション]-> [環境]-> [ドキュメント]-> [ロード時に行末が一貫していることを確認します]。この警告は、複数のプラットフォームにわたる製品で作業している場合に非常に役立ちます。
the_mandrill 2015

75

一部の行はで終わり\nます。

他のいくつかの行はで終わり\r\nます。

Visual Studioは、すべての行が同じで終わるようにすることをお勧めします。


40

Visual Studio 2012を使用している場合:

メニューに移動し、ファイル高度な保存オプションの選択→ 行末として種類のWindows(CR LF)を


1
そのオプションは、Visual Studio 2010 Ultimateバージョン10.0.40219.1 SP1Relの[ファイル]メニューに表示されません。
2012

1
@ DOK、Visual Studio 2010 Premiumバージョンの[ファイル]メニューにあります。
Peter

4
オプションが表示されない場合は、[ツール]> [カスタマイズ]に移動し、[コマンド]タブに移動してコマンドを追加することで、ファイルメニューをカスタマイズできます。
Robは

すべてのファイルに同時に影響する一般的な設定はありますか?ソリューションの下ですべてのソースに対してこれを行うのは苦痛です。
クラウス

12

オプションのオン/オフを切り替えるには、メニューバーから次の手順に従います。

ツールオプション環境ドキュメントロード時に一貫した行末を確認


7

編集中のファイルは、同じ行末を使用しない他のエディターで編集されているため、ファイルの行末が混在しています。

行末に使用されるASCII文字は次のとおりです。

CR、キャリッジリターン
LF、ラインフィード

Windows = CRLF
Mac OS 9以前= CR
Unix = LF


6

ウィキペディアの改行記事が役立つかもしれません。以下は抜粋です。

異なる改行規則により、異なるタイプのシステム間で転送されたテキストファイルが誤って表示されることがよくあります。たとえば、UnixまたはApple Macintoshシステムで作成されたファイルは、Microsoft Windowsで実行されている一部のプログラムで単一の長い行として表示される場合があります。逆に、UnixシステムでWindowsコンピューターからのファイルを表示すると、余分なCRが^ Mとして、または各行の終わりに、または2番目の改行として表示される場合があります。


5

たとえば、テキスト行の一部が<Carriage Return><Linefeed>(Windows標準)で終わり、一部がa <Linefeed>(UNIX標準)で終わることを意味します。

「はい」をクリックすると、ソースファイルの行末がすべて同じ形式に変換されます。

(行末は単なる空白として数えられるため)これはコンパイラーには何の違いもありませんが、他のツール(たとえば、バージョン管理システムの「diff」)に多少の違いをもたらす可能性があります。


4

それはVisual Studioだけではありません...ファイル、コンパイラ、リンカなどを処理するために必要なツールです。

一般的に(ソフトウェア開発の場合)、マルチプラットフォームの行末の問題を受け入れますが、バージョン管理ソフトウェアにそれを処理させます。


1
同意する。SCMシステムに任せるのが最善です。svnを使用している場合は、stackoverflow.com
questions / 15687 /…

完全に同意する。プロジェクトでWindowsを使用していて、チームメイトがMacを使用している場合はどうなりますか?私たちは常にCRをCRLFに変更し、また元に戻します。SCMにそれを抽象化させるのが最善です。答えのほとんどは、人々が自分で作業している、またはコードで作業している全員がWindowsを使用していると仮定しています。
bytedev

3

Webから何かをコピーして貼り付けると、一貫性のない行末が表示されることがあります。
これを修正するには、Visual Studioの拡張機能「Line Endings Unifier」を使用して、ファイルの保存中に行末を自動的に一貫させることができます。

ここに画像の説明を入力してください


2

ファイルの保存時に行末形式を変換するVisual Studio 2008のアドインがあります。こちらからダウンロードできます:http : //grebulon.com/software/stripem.php


これは、svnから「一貫性のない行末」エラーが発生した場合に役立ちます。
kgriffs
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.