多くのクラス ライブラリ プロジェクトを使用したソリューションがあります。これらは、それぞれ一連の 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 (依存関係を含む) のみをコピーする方法はありますか?