今日、興味深い問題に遭遇しました。同じ構成を使用しても、ビルド マシンではテストが正常に機能していたのに、ビルド マシンでは一貫して失敗していました。失敗ダンプで Assert.AreEqual によって出力された差分を見たところ、何も違いは見られませんでした。一連の調査の結果、テスト ケースのソース コード (複数行にまたがる) の逐語的な文字列が、自分のマシンでは CRLF を使用しているが、ビルド マシンでは LF を使用しているため、その文字列と生成された失敗する文字列。原因は、ビルド システムが CRLF シーケンスを LF に自動的に変換するという、2 つのシステムでの Git 設定の不一致であることが判明しました。
C# の仕様は、逐語的な文字列の改行をどのように解釈するかについて何か述べていますか (おそらく、Environment.Newline を使用するか、少なくとも一貫したものを使用します)。これは、特に .NET Standard では、診断と修正が非常に困難な方法で多くの人を悩ませる問題のようです。たとえば、.NET Standard プロジェクトがあり、チーム メンバーが Linux と Windows の両方にいる場合、これは Linux チーム メンバーまたは Windows チーム メンバーのいずれかに影響を与える可能性があります。