2016-10-04 6 views
0

時のバージョン管理情報(TFS)を使用してファイルを生成するために、どのように私は問題がQAで私に提示されたときから構築されたものを、Webアプリケーションを構築知らずの疲れ。私の提案する解決策は、ビルドプロセスの一部としていくつかの静的コンテンツを生成して、そこに有用な情報を持つことです。誰かがサーバー上で手動でそのファイルを参照することができ、おそらくHTTPのコンテンツをjsonというAPIの一部として提供する機能を提供するのが良いと思います。ビルド

単純な権利と思われますか?私は過去にSubversionでこれを行うことをたくさん見てきましたが、私はTFSのオプションに慣れていません。私は、リポジトリ、ブランチ、チェンジセット番号などのTFS情報を収穫する2つのことと、標準ビルドプロセス内のすべてのファイルにコンテンツを書き込む方法を実際に探していることを認識しています。 Nugetのようなものを使って、既存のMSBuildのターゲットやツールがあるかどうかは、ローカルのビルドビルドであるかどうかを問わず、すべてのビルドに適用されます。 devまたはCIサーバー環境を設定していますか?私が望んでいるのは、これは、誰かがすでにこの正確なことをして、再利用のためにパッケージ化しているか、またはその断片が、さまざまな一般的なパターンとして繰り返すことができるように、 .NETプロジェクトの種類

更新:提案された解決策の1つの問題は、生成された静的ファイルが何であれ、ビルドプロセスによってコンテンツとしてピックアップされるように、プロジェクトへの参照として追加する必要があることです残りのWebアプリケーションと共に適切にコピー/パブリッシュされます。おそらく、プロジェクトが少なくとも一度構築された後で壊れた参照をプロジェクトに追加しておくことができます。これは、パッケージリストアがNuGetで使用されていた古い方法を思い起こさせるものです。

関連リソース:

+0

XAMLビルドを使用しているようです。 XAMLでカスタムアクションを追加して、生成された 'ver.txt'ファイルでファイルをチェックアウトし、ソースコントロール情報を更新してから再度チェックインすることができます。 –

+0

私の目標は、このプロセスをビルドプロセスの一部にすることです。履歴にノイズを追加します。おそらく私は問題を間違って考えている?ソース管理ですでに本質的に知っているテキスト形式のチェックイン/コミットには他にも利点がありますか?ビルドが完了するまで(例えば、ビルド、変更、ビルド、コミット、OUT-OF-SYNC-UNTIL-NEXT-BUILD)、2つの同期が外れることは心配です。 – jpierson

答えて

1

バージョン管理情報が環境変数ですでに生成されている場合は、環境変数から読み込むための簡単なコマンドを記述するだけです。

vNextビルドの場合:Predefined variablesこれらの情報は、あなたの要件を満たしているかどうかを確認するために、次のリンクをチェックしてください。 XAMLビルドの

TF_BUILD environment variables。あなたが詳細については、この質問を参照することができ

生成されたファイルを含めるには、:ここでHow do you include additional files using VS2010 web deployment packages?

+0

私はこれまでに読んだことから、これらの環境変数はTFSビルドでのみ利用できると仮定しました。残念ながら私は購入していない、またはCIに投資しているグループのためにこのソリューションを開発していますので、dev - > QAおよびdev - > production publishingで動作するものが必要です。 – jpierson

+1

@jpiersonあなたの要件を誤解して申し訳ありません。はい、あなたは正しいです。変数は、TFSビルドでのみ使用できます。 TFSビルド外でバージョンコントロール情報を取得したい場合は、 "TF"コマンドを使用するのが良い方法です。 –

0

は今のために働いている私はこれを作ってみたです:

<Target Name="BeforeBuild"> 
    <PropertyGroup> 
     <ProgramFiles32>$(MSBuildProgramFiles32)</ProgramFiles32> 
     <VS14Dir>$(ProgramFiles32)\Microsoft Visual Studio 14.0</VS14Dir> 

     <TF Condition="Exists('$(VS14Dir)')">$(VS14Dir)\Common7\IDE\TF.exe</TF> 
     <TfCommand>&quot;$(TF)&quot; vc info . &gt; version.txt</TfCommand> 
    </PropertyGroup> 
    <Message Importance="High" Text="Creating version.txt: $(TfCommand)" /> 
    <Exec Command="$(TfCommand)"></Exec> 
    </Target> 
    <ItemGroup> 
    <Content Include="$(SolutionDir)\version.txt"> 
     <Link>%(Filename)%(Extension)</Link> 
     <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> 
    </Content> 
    </ItemGroup> 

これはを呼び出しますtf.exeコンソールアプリケーションでは、現在のディレクトリのバージョン管理情報を取得するvc info .を取得し、>> version.txtを使用して出力をファイルにパイプします。これには多分改善がありますが、それは始まりです。次に、生成されたversion.txtファイルをプロジェクト内のコンテンツとして含める方法を見つける必要があります。

UPDATEは:それはtf infoのように見えるだけの作業コピーに関する情報about the specified directoryなくなります。私はもう一度代替案を探しています。