0

多くのクラス ライブラリ プロジェクトを使用したソリューションがあります。これらは、それぞれ一連の DLL を生成します。

これらをデプロイする方法は、GAC にインストールすることです。したがって、DLL で Gacutil /i を実行するスクリプト (BAT ファイル) を作成できます。

現在、TFS を使用して、既定の TFS ビルド テンプレートを使用してソリューションをビルドしています。

ソリューションを構築し、DLL とインストール スクリプトを含む各プロジェクト (リリース パッケージ) のフォルダーを作成するには、TFS が必要です。その後、ドロップ フォルダーに移動し、フォルダー (リリース パッケージ) のリストを表示し、各クラス ライブラリをフォルダー内にインストールするために必要なすべてのことを行う必要があります。

例えば

-> ドロップフォルダー
  -> プロジェクト 1
     -> Proj1.dll
     -> Install.bat
  -> Proj2
     -> Proj2.dll
     -> Install.bat
  -> Proj3
     -> Proj3.dll
     -> Install.bat

アップデート:

プロジェクトごとに、次のビルド後のイベントを設定しました。

powershell -executionpolicy Bypass -file "$(ProjectDir)Deployment\CreateDeploymentPackage.ps1" -Bin $(TargetDir) -Source $(ProjectDir) -Name $(ProjectName)

私のソースには、前述のpowershellスクリプトDeployment\CreateDeploymentPackage.ps1があります

PowerShell スクリプトは次のようになります。

パラメータ(
[文字列][パラメータ(必須=$true)] $Bin,
[string][parameter(mandatory=$true)] $Source,
[string][parameter(mandatory=$true)] $Name)

$packagePath = "$Bin$Name"
New-Item "$packagePath" -type ディレクトリ

コピー項目 *.dll $packagePath -recurse

Copy-Item "$deploymentScripts\Install.ps1" "$packagePath" -recurse
Copy-Item "$deploymentScripts\Uninstall.ps1" "$packagePath" -recurse

これで、ローカルでビルドするときに機能します。bin ディレクトリ内のすべての dll を取得し、それらをフォルダーにコピーします。

これは TFS ビルド サーバーでも機能しますが、プロジェクトを単独でビルドする場合のみです。

問題は、TFS がソリューション内のすべての dll を単一の bin 出力ディレクトリにビルドする方法にあります。

質問

各 dll を明示的にリストせずに、プロジェクトに関連する dll (依存関係を含む) のみをコピーする方法はありますか?

4

1 に答える 1

1
  1. 少しでも問題はありません。必要に応じてソース管理をセットアップできます。

  2. TFS がアセンブリを配置する場所を制御する方法を説明しているこのMSDN 記事を読んでください。install.bat ファイルについては、それらを TFS にチェックインし、ビルド後のステップを使用してそれらを出力と共にコピーできます。本当に必要な場合は、ビルドの一部として生成するカスタム TFS アクティビティを作成できる可能性があります。Ewald Hofman によるこのブログ シリーズを読んで、TFS ビルドのカスタマイズについて頭を悩ませてください。

于 2012-11-07T22:09:26.413 に答える