0

<Exec \>特にカスタムビルドタスクや拡張パックなどへの依存関係を作成したくない場合は、MSBuild中にTFSコマンドラインを実行するためにMSBuildタスクとシェルをTF.exeに使用するのが依然として最も簡単であると理解しています。 (MSBuildを使用したTFSからのチェックアウトを参照してください)

それを考えると、特にさまざまな開発者がTFS2010またはTFS2012をVS2010およびVS2012と混合し、64ビットワークステーションと混合する可能性があるため、tf.exeに使用するのに最適なパスは何ですか。

VSまたはTFSのバージョンに関係なく、MSBuildからTF.exeコマンドを呼び出す変数/パスの標準的な方法はありますか?

4

2 に答える 2

4

システムが 64 ビットかどうかは、ProgramW6432環境変数を調べることで確認できます。

また、ユーザーが既定のインストール パスを選択している限り、VS2012 の場合でも、TF.exe は Visual Studio の 32 ビット部分にインストールされたままになります。したがって、探す必要があるのは、ユーザーが 2012 または 2010 をインストールしているかどうかだけです。それは次の条件で可能になるはずExistsです:

<PropertyGroup>
  <ProgramFiles32 Condition="$(ProgramW6432) != ''">$(PROGRAMFILES) (x86)</ProgramFiles32>
  <ProgramFiles32 Condition="$(ProgramFiles32) == ''">$(PROGRAMFILES)</ProgramFiles32>

  <VS10Dir>$(ProgramFiles32)\Microsoft Visual Studio 10.0</VS10Dir>
  <VS11Dir>$(ProgramFiles32)\Microsoft Visual Studio 11.0</VS11Dir>

  <TF Condition="Exists('$(VS10Dir)')">&quot;$(VS10Dir)\Common7\IDE\TF.exe&quot;</TF>
  <TF Condition="Exists('$(VS11Dir)')">&quot;$(VS11Dir)\Common7\IDE\TF.exe&quot;</TF>
</PropertyGroup>
...
<Exec Command="$(TF) checkout ..."></Exec>
于 2012-10-08T11:14:30.577 に答える
3

tbergstedt の解決策は、おそらくより堅牢であり、他の問題にも適応できます。TF.exe 実行可能ファイルは開発者環境パス$(DevEnvDir)にもあるため、これにはショートカットがあることがわかりました。下記参照:

  <PropertyGroup>
    <TfCommand>&quot;$(DevEnvDir)\tf.exe&quot;</TfCommand>
  </PropertyGroup>
于 2012-10-08T11:21:03.773 に答える