2017-08-25 13 views
4

MVCまたは.Netコアではない2つのASP.Net Webアプリケーションとそれに依存するライブラリが2つあります。VSTS:複数プロジェクトのVisual StudioビルドステップでFileSystem WebPublishMethodを処理する方法

VSTSにビルド定義があり、Visual Studioビルドステップが含まれています。このビルドステップでは、MSBuildを使用してソリューションが構築されます。私はこの方法を使用すると、に公開されるWebサイトを要求することはできません

/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\"

のMSBuild引数のデフォルト設定では、バッチファイルを経由して展開されるように、単一のファイルに各Webアプリケーションをパッケージ化既存のスクリプトがデプロイメントを行うことができるようにします。これは、実際にファイルシステムに2つのウェブサイトを公開しないが、問題は、それが同じフォルダ内に互いの上にそれらの両方を置くことである

/p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:publishUrl=$(build.artifactstagingdirectory)\website

は、そのため私は、これらの引数を変更しました。

2種類のウェブサイトが異なるフォルダになるように、パラメータ化されたURLの一部をpublishUrlに渡す方法はありますか?または、各プロジェクトごとにMSBuildのステップを個別に作成する必要がありますか?

+0

は、これはvs 2015またはvs 2017を使用して作成されていますか? –

+0

@MartinUllrich:2017 – Paul

答えて

3

プロジェクトに追加のビルドロジックを追加する必要があります。これは、1回の呼び出しでのみ行います。

(すべてのWebプロジェクトはディレクトリ階層でその下にあるように)あなたは、次の内容であなたのソリューションのルートディレクトリにDirectory.Build.propsファイルを作成することができます。

<Project> 
    <PropertyGroup> 
    <PublishUrl Condition="'$(PublishBaseUrl)' != '' and '$(PublishUrl)' == ''">$(PublishBaseUrl)\$(MSBuildProjectName)\</PublishUrl> 
    </PropertyGroup> 
</Project> 

をこれはあなたの代わりにパラメータとして/p:PublishBaseUrl="$(build.artifactstagingdirectory)\\"を設定することができますPublishUrlであり、プロジェクト名がパスに追加されます。

+0

大変申し訳ありませんが、ありがとうございます。完璧に働いた。私はプロジェクトのプロパティファイルを使用するとは思わなかった。 – Paul

関連する問題