5

TFS 2012 を使用して、複数の Windows サービスと 2 つの Web アプリケーションを含むソリューションのビルドを自動化しています。

ここで見つけたガイドを使用してビルド プロセス テンプレートをカスタマイズし、Windows サービスが好きなフォルダー構造に配置されるようにしました。具体的には:

  1. \dropserver\droproot\MyApp\BuildNumber\
    • \サービス1
    • \Service2
    • \Service3
    • \Service4

これはうまく機能しますが、残念ながら Web アプリケーションでは機能しません。それらに同じ戦略を使用した場合、サイトのコンテンツ全体ではなく、各 Web アプリの /bin のコンテンツを取得するだけです。

MSBuild は通常、これを処理するために Web アプリケーション ターゲットを使用しますが、私のようにビルドをカスタマイズすると、何らかの理由でこれが機能しません。ビルド出力に _PublishedWebSites フォルダーが表示されなくなりました。(これは、MSBuild タスクの OutDir プロパティをクリアしたためだと思います。)

このようなことをして、Web アプリケーションでも動作するようになった人はいますか?

4

5 に答える 5

1

少しカスタマイズすることで、このソリューションは私にとってうまくいきました:

http://www.edsquared.com/2011/01/31/Customizable+Output+Directories+For+TFS+2010+Build.aspx

基本的に、そのリンクが推奨することを行いましたが、条件付きプロパティ定義ではなく、新しいソリューション構成 (私は TeamBuild と呼びました) も活用しました。

これをすべて機能させるための鍵は、outputDirectory を TeamBuildOutDir 引数として MSBuild に渡すことだったと思います。この変数参照を OutDir または OutputPath 変数に埋め込むことで、チーム ビルドは正しいステージング場所にビルドし、その場所からドロップ フォルダーにファイルを自動的にコピーできました。

これをもう少し進めて、_PublishedWebSites 全体を取り除きますが、それはビルド ワークフローで完全に行われます。

編集: TFS 2013 は、単純なビルド構成オプションでこれをネイティブにサポートします。

ここに画像の説明を入力

于 2013-02-28T16:06:39.060 に答える
1

OutDir が OutputPath と同じ場合、ビルド ターゲットでは、公開された Web サイト フォルダーが作成されないように見えます。

これは完全ではありませんが、最初のプロパティ グループの csproj ファイルに次を追加すると、_PublishedWebsites フォルダーを含むすべてが "\bin\deploy\" にデプロイされます。

<DeployOnBuild>True</DeployOnBuild>
<OutDir>bin\deploy\</OutDir>
于 2013-02-18T16:33:53.187 に答える
0

参照リンクでわかるように、バイナリをコンパイルしてパッケージ化するだけです。それに記載されている手順で Web サイトを展開することはありません。

フォルダ配下の .html、.css、.js などを取得したい場合はWeb Deployment_PublishedWebSitesを行う必要があります。これを手動で行うには、VS プロジェクトの右クリック メニューからオプションをクリックし、[ Publish Method as File System ] を選択します。publish

ただし、ビルドでこれを自動化し、カスタム ドロップ フォルダーにドロップする必要があるため、AspNetCompilerタスクを呼び出して MSBuild スクリプトを操作する必要がある場合があります。詳細については、MSDN リンクを参照してください。while を指定してTargetPathこのターゲットを呼び出すと、Web ファイルを適切なカスタム ドロップ フォルダに配置できます。

ハッピー スクリプティング。

于 2013-02-25T14:29:40.750 に答える
0

このスレッドもこの投稿としてご覧ください。 チーム ビルド: MSDeploy を使用してローカルで公開 する Web プロジェクトにはすべてのファイルが必要なので、公開プロセスをトリガーする必要があります。そのプロセスの宛先を微調整することで、必要な場所にすべてのファイルをコピーできます。彼の答えのオプション(2)がうまくいくと思います。それが役立つことを願っています。

于 2013-02-22T19:00:56.640 に答える