2つの基本的な(MVCまたは.Net Coreではない)ASP.Net Webアプリケーションと、それらが依存するいくつかのライブラリを含むソリューションがあります。
VSTSには、MSBuildでソリューションをビルドするVisual Studioビルドステップを含むビルド定義があります。
MSBuild引数のデフォルトセットは、各Webアプリケーションを単一ファイルにパッケージ化し、バッチファイルを介してデプロイします。
/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\"
この方法は使用できません。また、既存のスクリプトが展開を実行できるように、Webサイトをファイルシステムに公開する必要があります。
したがって、これらの引数を次のように変更しました。
/p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:publishUrl=$(build.artifactstagingdirectory)\website
これは実際に2つのWebサイトをファイルシステムに公開しますが、問題はそれらを同じフォルダー内で互いの上に配置することです。
2つのWebサイトが異なるフォルダーに配置されるように、何らかのパラメーター化されたURLをpublishUrl
に渡す方法はありますか?または、プロジェクトごとにMSBuildステップを個別に作成する必要がありますか?
プロジェクトに追加のビルドロジックを追加する必要があります。追加するには、1回の呼び出しで行います。
ソリューションのルートディレクトリに_Directory.Build.props
_ファイルを作成すると(すべてのWebプロジェクトがディレクトリ階層でその下にあるように)、次の内容を使用できます。
_<Project>
<PropertyGroup>
<PublishUrl Condition="'$(PublishBaseUrl)' != '' and '$(PublishUrl)' == ''">$(PublishBaseUrl)\$(MSBuildProjectName)\</PublishUrl>
</PropertyGroup>
</Project>
_
これにより、PublishUrl
の代わりに/p:PublishBaseUrl="$(build.artifactstagingdirectory)\\"
をパラメーターとして設定でき、プロジェクト名がパスに追加されます。