プロジェクト/ソリューション ファイルのマージは、ソース管理でマージを実行する開発者/SCM 管理者の間でよく知られている災害です。
たとえば、一般的なシナリオを考えてみましょう。開発は、2 つの異なるブランチのプロジェクト/ソリューションで行われます。メインの開発ラインにマージするときが来ると、VCPROJ (および SLN) の間には非常に小さな類似点があります。
その理由は、Visual Studio がこれらのファイル内のさまざまな XML に似た要素の場所を変更する可能性がある (実際に変更する可能性がある) ためです。たとえば、構成のデバッグとリリースは、proj ファイルの保存操作ごとに順序が入れ替わる場合があります。これにより、自動マージを考慮しなくても、各開発ブランチからの変更を簡単に組み込むことができなくなります。
Microsoft は vcproj 構造を保持するために何らかの perl ハッシュ システムを使用していると推測できます。そのため、保存操作時のファイルのレンダリングは順序付けされていません。
最初に質問したいのですが、これを回避するためのエレガントな方法を見つけた人はいますか?
次に、次の 2 つの提案を行います。
Microsoft に上記のファイルを再実装してもらい、要素の順序を厳密に制限してください。
vcproj (xml 形式) および sln (sln 形式...) ファイルをアルファベット順に、再帰的に (要素内のすべての要素など) 並べ替えるツールを見つける (または作成する)。ソース ファイルとターゲット ファイルの両方でこのツールを使用すると、Visual Studio が並べ替えられ、マージされたプロジェクトまたは sln ファイルを読み取ることを期待して、変更を簡単にポイント (およびマージ) できます。
その他のアイデアや考えは大歓迎です。