私はの線に沿って簡単なビルド前のイベントを含みvcprojファイルを持っている:
Helpertask.exe $(ProjectDir)
これは、開発者のPC上で正常に動作しますが、解決策があるとき$(ProjectDir)は、MSBuildの下にあるTFS 2008ビルドサーバー上に構築されていますが、空白であるか、サーバー上の無関係なフォルダを指しています。
これまでのところ、私が管理している最適な回避策は、ハードコードする代わりに、開発者およびサーバーのパスです:
if exist C:\DeveloperCode\MyProject HelperTask.exe C:\DeveloperCode\MyProject
if exist D:\BuildServerCode\MyProject HelperTask.exe D:\BuildServerCode\MyProject
このハックはポスト -buildの手順で動作しますが、それは事前のために動作しません。 -buildステップ(プレビルドタスクはMSBuildの下では何もしません)
修正プログラムや回避策についてご意見はありますか?私はほとんど髪が残っている!
私のために働きました。私はそれを数週間前、今日また見ました。 "echo $(ProjectDir)"をビルドステップに追加すると、正しい値が出力され、再び機能するようになりました。 ほとんど神秘的です。 壊れていた$(ProjectDir)ではないと思われ始めましたが、ビルド前のステップは実行されていませんでした(ビルド前のステップを実行していることを記録しますが、ビルドはステップコマンドが実行されていない状態で) –