質問

Microsoft Visual Studioは、XMLを使用して .vcproj プロジェクトファイルを保存します。したがって、XMLプロジェクトファイルの差分は簡単に する必要があります。

残念ながら、プロジェクトファイルのプロパティを変更すると、Visual StudioはプロジェクトファイルのXMLノードをランダムにシャッフルすることを要求します!これにより、プロジェクトファイルの変更のテキストによる差分とマージが基本的に不可能になります。 1つのコンパイラ設定を変更すると、視覚的なdiffツールで、ファイル内の行の50%が変更されたと考えることができます。いくつかのXML diffツールも試しましたが、同じ混乱のより構造化されたビューが表示されるだけです。

ソース管理で .vcproj ファイルを維持するための提案はありますか?または、 .vcproj ファイル内のXMLノードを再配置しないようにVisual Studioを説得する方法ですか?

(CMakeなどのツールを使用して、diffにより使いやすいテキストファイルから .vcproj ファイルを生成することも検討しましたが、CMakeには独自の問題があります。

役に立ちましたか?

解決

これは時々現れるようです。

おそらく、プラグインまたは他の正規化ツールの熟した問題です。

MSが修正を決定するまで、それは素晴らしい副業でしょう。それからあなたは運が悪い-もちろん彼らがあなたのIPを買うことを申し出ない限り。

誰もがオープンソースプロジェクトを開始したいですか、それとも商用製品ですか?私はゲームです。

スタンドアロンの正規化ツールを使用して、プラグインに変換できるかどうかを確認します。

他のヒント

これは、現在作業中です。プロジェクトファイルでは、構成が複数の人のコンピューターで並べ替えられており、非常にイライラしています...

* 注: 私たちはすべてチームではなくVS 2008 Proを使用しています

最初はランダムに並べ替えられているように見えますが、実際にはパターンがあり、ランダムではありません。

1つのグループでは、構成はプラットフォーム、次に構成の順に並べられます:

  • デバッグ| Win32
  • デバッグ| x64
  • リリース| Win32
  • リリース| x64
  • DX11のデバッグ| Win32
  • DX11のデバッグ| x64
  • リリースDX11 | Win32
  • リリースDX11 | x64
  • ...

他のグループの場合、構成はConfig、次にプラットフォームの順に並べられます:

  • デバッグ| Win32
  • リリース| Win32
  • DX11のデバッグ| Win32
  • リリースDX11 | Win32
  • デバッグ| x64
  • リリース| x64
  • DX11のデバッグ| x64
  • リリースDX11 | x64
  • ...

perforceの履歴を見ると、これは同じ人々のセットから送信された複数のプロジェクトと一致しており、約50/50の分割があるため、1人だけで起こっているわけではありません。

これはみなさんが見ているのと同じ問題ですか? もしそうなら、このパターンがマクロ/余分な差分ステップを含まない解決策を見つけるのに役立つことを願っています...

これらのマシンごとに100%再現可能であるため、どこかで設定するか、何かをクリックする副作用があります。最初の環境レイアウト(VC ++、VB、General Development、ect ...)に選択するオプションのような馬鹿げたものでも、

WinMergeをdiffツールとして使用し、移動ブロック検出を有効にしました。問題を完全に解決するわけではありませんが、違いを視覚化するのが少し耐えやすくなります。

これはVisual Studioのどのバージョンで見られますか?

.vcprojファイルで多くの作業を行います(複数のVisual Studioバージョンでライブラリのプロジェクトファイルのバージョンを維持し、常に差分を作成してマージしています)が、この動作を見たことはありません。

アドビの私のチームは、vs2008でも同じことを見ました。基本的なデバッグ/リリース、win32 / win64プロジェクトは、4つの構成とランダムシャッフルを提供します。何人かがdevstudioがいつ、なぜ再注文するかを理解しようとしましたが、現在の考えはソートキーはキーワードハッシュであるため、半ランダムです。私たちはあきらめて、コードレビューで「本物」を要約するだけです。変更。

このシャッフルの理由を見つけたと思います。少なくともVS2008では。

x64コンパイラをインストールすると、VSは次のようにプロジェクトを注文します:

Debug|Win32
Debug|x64
Release|Win32
Release|x64

そうしない場合、次のように注文します:

Debug|Win32
Release|Win32
Debug|x64
Release|x64

すべてのピアに同じコンパイラセットがインストールされていることを確認して、シャッフルしないようにします。

テストを行ったところ、この動作は再現可能であるようです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top