私のBeforeBuild Targetが期待どおりに実行されなくなった理由を最後に認識しました。それはプロジェクトの設定名が変更されたためです。しかし、私が本当にやりたいことは、プロジェクトのものではなく、という構成名のをテストすることです。MSBuild Targetのテスト条件としてソリューションのコンフィグレーション名を使用
私は、プロジェクトの構成名が$(構成)に格納されていることを知っています。ソリューションの構成名の1つがありますか?または、おそらくソリューション名が構成マネージャーにしか分かっていないため、これは単純に不可能ですか?もしそうなら、誰もが設定を管理するための良い方法を勧められますか?私はどこでも重複プロジェクト構成名を追加する必要があることを憎む...
UPDATE:いくつかのドキュメントを検索して読んだ後、私はMSBuildのは、ソリューションの設定名を認識していることをすべての証拠を見つけることができませんでした個々のプロジェクトファイルがコンパイルされるときに発生します。私は先に進み、コマンドラインから解決策を構築して/v:diag
を渡し、出力をファイルにダンプしました。このファイルを検索して、ソリューションの構成名が「展開」であることを知っている兆候を見つけましたが、BeforeBuild条件がチェックされたときにその文字列の唯一の出現が表示されます。
さて、ソリューションファイルはVisual Studioの概念であり、msbuildのものではありません。 –
これは本当に残念ですが、MSBuildはソリューションファイルを引数として受け入れるので、実際には非常に奇妙です。ソリューションには、その内部にすべての構成名が含まれています。 – Dave
Msbuildはそのソリューションファイルをmsbuildファイルに変換し、msbuildファイルを処理します。私はそれがうんざりすることに同意しますが、これが出て以来、これはMSBuildの一部であり、私たちのほとんどはそれに慣れています。ここに情報:http://pjbelfield.wordpress.com/2007/11/15/the-solution-file-is-not-an-msbuild-file/ –