2009-09-23 8 views
20

は実際に私がしたいと私はにより頻繁に得る問題を中心に来る:Visual Studio内の構成を比較しますか?

は、次のことを考えてみましょう: あなただけの新しいソリューション/プロジェクトを作って、あなたが必要なすべてのものを追加/作成を開始します。あなたがそうしている間、あなたは常にデバッグ設定内にいます。あなたの設定(C++プロジェクト、特にコンパイラ、リンカの設定)を変更し、最終的なビルドを行うためにモードを解放し、何が起こるのかを一日の終わりに変更しますか?定義の欠落、リンクされたライブラリ、プリプロセッサ定義、プリコンパイルされたヘッダーなどについてのエラーメッセージがたくさんあります)

今は?プロジェクトのプロパティを開き、ツリービューで各項目を選択し、左上にある構成のコンボボックスを切り替えます。

両方の設定が1つのファイルに保存されるため、単純な差分ツールを使用することはできません。また、プロジェクトファイルから両方の部分をコピーして2つの異なるファイルに貼り付け、すべてをプロジェクトファイルにマージします。

1つのプロジェクト内のさまざまな構成を比較する優れたソリューションはありませんか?

+4

あなたは思考後の解決策を探していますが、これは私が最初にこの問題を回避するために行うことです:設定で何かを変更するたびに、_すべての設定_を選択します。これはほとんどの利用可能な設定、特にLinkerやInclude設定などの設定では問題ありません。 – OregonGhost

+2

あなたはそうです。私はすでに*すべての設定*を使用しますが、時々私は逃してしまいましたし、しばらくして私はすべての設定が正常に構築されることができず、手動で設定を比較する気が楽な作業を開始します... – Oliver

+1

私はプロジェクトファイルを解析し、さまざまな設定間でさまざまな値を比較するためのツールを書くことを考えています。あなたは解決策を見つけたことがありますか?(自分のツールを書く必要はありません) – aldo

答えて

1

私はプロジェクトファイル内で比較するのに最適な解決策はありません...しかし、それは価値があるため、現在のプロジェクトファイルとソース管理のコピーを比較すると便利です。 1つのセクションで変更された値が表示される場所では、その値が他のセクションでも変更されているかどうかをすぐに確認できます。

あなたの質問には新しいプロジェクトが指定されています...だから、まだソース管理にはないと思います。

別のオプションがあります:プロジェクトファイルを別の名前にコピーし、2つのコピーを比較します。はい、それらは同じになります...しかし、あなたが手動でセクションを整列させることができるBeyond Compare 2のような良いツールを使用している場合は、左側のウィンドウのデバッグセクションの最初の行を右クリックし、整列を選択します手動で右ウィンドウのリリースセクションの最初の行を右クリックし、[手動で整列]を選択します。 Voila ...あなたの変更があります。 :)

+0

これはかなり良い選択肢ですが、私はすでに多かれ少なかれこのようなことをやろうとしていますが、不快で醜いと感じる。特に差分ツール(ソース管理のためのVS組み込みバージョン)の使用は、ツールが既に存在していることを示しています。 私たちが必要とするのは、xmlファイルを正しく分割して、2つのバージョン(デバッグ、リリースなど)をお互いに見せて、手動で行う必要がないという仕組みです。 – Oliver

1

非常に安いBeyondCompare3というプログラムがあります。私はめったに製品を推奨していませんが、ここであなたの仕事をしなければなりません。 「クリップボードへの選択を比較」オプションを使用します。

+0

私がすでに言ったように、私は外部差分ツールを使ってこれらのタスクを達成しようとします。しかし、raw xmlファイルを開いて2つのセクションを手動で整列させるのはとても不愉快なので、diffツールはこれらの2つのセクションを比較します。 – Oliver

+0

このツールを使いましたか? diffツール間には多くのバリエーションがあります。 BeyondCompare 3では、比較する領域を強調表示します。それでも努力は必要だが、調整するほどではない。 オートマチックの「自分の設定を修正する」答えを探しているなら、あなた自身で書く必要があります。それは、それに対処するために、そこにたくさんの人々がユーティリティを書いていなくても、無料であろうとなかろうと、それほど大きな問題ではないということです。 –

3

ここで価値のあることは、1つの設定を変更してもう一方を変更することを忘れることです。しかし、私が使用しているこのプロセスには2つの警告があります:1)VS2010以上で動作します。 2)私はその問題を完全に回避することを学んだ。

最初に、NEVERプロジェクトのプロパティページ自体を変更してください!彼らは最初にこの問題を引き起こすビルド条件を使用する傾向があります。代わりに、私はいつも自分の "Solution Explorer"の横に私の "Property Manager"を開いています。 - 私に固有の共通マクロ定義

  • my_macros.props:

    第二に、私は例えば、私がから含まサブフォルダと呼ばれるcommon.properties内のいくつかの「事前定義された」プロパティ・シートを、持っていますソリューションの(読み込み:フレームワーク)ディレクトリ構造。たとえば、$(SolutionDir)bin¥$(Configuration)¥$(ProjectName)に等しいMY_COMMON_OUTPUT_DIRECTORYという定義があります。

  • my_dox_settings.props - doxygenプロジェクト固有の設定。うん、私はドキュメントを作成するためにdoxygenを使って別々のプロジェクトを作成する。

  • my_test_settings.props - 私のユニットテストフレームワークに固有の設定。繰り返しますが、単体テストのための別個のプロジェクトです。コンパイルされた実行可能ファイルを実行するポストビルドイベントを追加します。

  • my_app_settings.props - アプリケーションのフレームワークのデフォルト設定。たとえば、 "出力ディレクトリ"を前述のMY_COMMON_OUTPUT_DIRECTORYに設定します。

  • my_app_settings_use_pch.props - プリコンパイル済みヘッダーを使用するアプリケーションのフレームワークに対する追加の変更。/DI_WANT_MY_PCHコンパイラスイッチを追加するだけです。

  • include_boost_files.props - 私のプロジェクトにブーストライブラリを追加するための設定。

  • include_ogre_files.props - 自分のプロジェクトにogre-librariesを追加するための設定。
  • include_sdl_file.props - 自分のプロジェクトにsdl-librariesを追加するための設定。あなたのアイデアを取得する必要があります

  • ...

次に、私は新しい空白のプロパティシートを作成し、同様にそれを追加します。私は通常、この$(ProjectName).props [注:マクロを自分で展開してください]を呼び出し、プロパティマネージャを介して最後の項目として追加します。

私はプロジェクトを変更する必要があるときに、単にプロパティマネージャに移動し、適切なプロパティシートを変更するだけです。そうすることは、そのプロパティシートを使用するすべてのプロジェクトに影響します。現在のプロジェクトにのみ影響を与えたい場合は、$(ProjectName)のプロパティシートを変更してください。あなたが条件に取り組まない限り(私は入りません)、一つの変更は多くの構成(そしてプロジェクト)に影響します。

common.propertiesディレクトリをソース管理にチェックすることさえできます。彼らはそれを導入したとき、私はこのことができます願ってい

+0

かなり良いアイデアのようですね。私は自己定義のプロパティページで作業したことがありませんでした(私はそれらについて知らなかったため)。ナットそれはその価値のように、より深く見るように聞こえる。 – Oliver

+0

このソリューションはどのようにあなたに適していますか? – jump

2

は私はわからないんだけど、VS2015でで、少なくとも、あなたは、プロパティの設定]ドロップダウンリストで、「複数の構成を...」を選択することができますページ画面。次に、さまざまなセクションから「すべてのオプション」を選択し、どのパラメータが異なるかを確認できます(異なるものが表示されます)。実際の値は表示されませんが、それでもそれを前後に切り替えなければなりませんが、少なくとも違いをすぐに見つけ出すことができます。

関連する問題