fc695c4479dc900237ff60d9aa97761441022afb
[platform/core/dotnet/build-tools.git] /
1 <!--\r
2 ***********************************************************************************************\r
3 Microsoft.NET.Sdk.Publish.MSDeployPackage.targets\r
4 \r
5 WARNING:  DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have\r
6           created a backup copy.  Incorrect changes to this file will make it\r
7           impossible to load or build your web deploy projects from the command-line or the IDE.\r
8 \r
9 This file defines the steps in the standard build process to deploy web application projects.\r
10 \r
11 Copyright (C) Microsoft Corporation. All rights reserved.\r
12 ***********************************************************************************************\r
13 -->\r
14 \r
15 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
16 \r
17   <!--\r
18   ***********************************************************************************************\r
19   Including the tasks\r
20   ***********************************************************************************************\r
21  -->\r
22   <UsingTask TaskName="MSDeploy" AssemblyFile="$(_PublishTaskAssemblyFullPath)"/>\r
23   <UsingTask TaskName="VSMSDeploy" AssemblyFile="$(_PublishTaskAssemblyFullPath)"/>\r
24   <UsingTask TaskName="NormalizeServiceUrl" AssemblyFile="$(_PublishTaskAssemblyFullPath)"/>\r
25   <UsingTask TaskName="ValidateParameter" AssemblyFile="$(_PublishTaskAssemblyFullPath)"/>\r
26   <UsingTask TaskName="CreateManifestFile" AssemblyFile="$(_PublishTaskAssemblyFullPath)" />\r
27   <UsingTask TaskName="CreateParameterFile" AssemblyFile="$(_PublishTaskAssemblyFullPath)" />\r
28   <UsingTask TaskName="CreateMSDeployScript" AssemblyFile="$(_PublishTaskAssemblyFullPath)" />\r
29 \r
30   <PropertyGroup>\r
31     <_DotNetPublishFiles>\r
32       MSDeployPackagePublish;\r
33     </_DotNetPublishFiles>\r
34   </PropertyGroup>\r
35 \r
36   <!--\r
37   ***********************************************************************************************\r
38   TARGET : MSDeployPackagePublish\r
39   ***********************************************************************************************\r
40  -->\r
41   <PropertyGroup>\r
42     <MSDeployPackagePublishDependsOn>\r
43       $(MSDeployPackagePublishDependsOn);\r
44       _InitMSDeployPackageProperties;\r
45       _PrepareForMsDeployPublish;\r
46       _CreateManifestFiles;\r
47       _CreateParameterFiles;\r
48       _CreateMSDeployScript;\r
49     </MSDeployPackagePublishDependsOn>\r
50   </PropertyGroup>\r
51 \r
52   <Target Name="MSDeployPackagePublish" DependsOnTargets="$(MSDeployPackagePublishDependsOn)">\r
53 \r
54     <PropertyGroup>\r
55       <MSDeployPublishSourceType>manifest</MSDeployPublishSourceType>\r
56       <MSDeployPublishSourceRoot>$(_MsDeploySourceManifestPath)</MSDeployPublishSourceRoot>\r
57       <!--Destination is alway a manifest-->\r
58       <MSDeployPublishDestinationType>Package</MSDeployPublishDestinationType>\r
59       <MSDeployPublishDestinationRoot>$(PackageLocation)</MSDeployPublishDestinationRoot>\r
60       <RetryAttemptsForDeployment Condition=" '$(RetryAttemptsForDeployment)' == '' ">2</RetryAttemptsForDeployment>\r
61       <PublishEnableLinks Condition="'$(PublishEnableLinks)' == ''"></PublishEnableLinks>\r
62       <PublishDisableLinks Condition="'$(PublishDisableLinks)' == ''">AppPoolExtension;ContentExtension;CertificateExtension</PublishDisableLinks>\r
63       <!-- UserAgent string sent to msdeploy -->\r
64       <_MSDeployUserAgentSource>CmdLine</_MSDeployUserAgentSource>\r
65       <_MSDeployUserAgent>VS$(_MSDeployUserAgentSource)</_MSDeployUserAgent>\r
66       <!-- MsDeploy Api is not supported for core yet -->\r
67       <UseMsDeployExe Condition="'$(UseMsDeployExe)' == '' And '$(MSBuildRuntimeType)' == 'Core'">true</UseMsDeployExe>\r
68     </PropertyGroup>\r
69 \r
70     <!--  Data Passed to MSDeploy -->\r
71     <ItemGroup>\r
72       <MsDeploySourceProviderSetting Remove="@(MsDeploySourceProviderSetting)" />\r
73       <MsDeploySourceProviderSetting Include="$(MSDeployPublishSourceType)">\r
74         <Path>$(MSDeployPublishSourceRoot)</Path>\r
75       </MsDeploySourceProviderSetting>\r
76 \r
77       <MsDeployDestinationProviderSetting Remove="@(MsDeployDestinationProviderSetting)" />\r
78       <MsDeployDestinationProviderSetting Include="$(MSDeployPublishDestinationType)">\r
79         <Path>$(MSDeployPublishDestinationRoot)</Path>\r
80       </MsDeployDestinationProviderSetting>\r
81     </ItemGroup>\r
82 \r
83     <VSMSDeploy Condition="'$(UseMsdeployExe)' != 'true'"\r
84        MSDeployVersionsToTry="$(_MSDeployVersionsToTry)"\r
85        Source="@(MsDeploySourceProviderSetting)"\r
86        Destination="@(MsDeployDestinationProviderSetting)"\r
87        DeploymentTraceLevel="$(PackageTraceLevel)"\r
88        DisableLink="$(PublishDisableLinks)"\r
89        EnableLink="$(PublishEnableLinks)"\r
90        ImportDeclareParametersItems="$(_MSDeployParametersFilePath)"\r
91        ReplaceRuleItems="@(MsDeployReplaceRules)"\r
92        RetryAttempts="$(RetryAttemptsForDeployment)">\r
93       <Output TaskParameter="Result" PropertyName="PackageResult" />\r
94     </VSMSDeploy>\r
95 \r
96     <MSdeploy\r
97       Condition="'$(UseMsdeployExe)' == 'true'"\r
98       Verb="sync"\r
99       Source="@(MsDeploySourceProviderSetting)"\r
100       Destination="@(MsDeployDestinationProviderSetting)"\r
101       DisableLink="$(PublishDisableLinks)"\r
102       EnableLink="$(PublishEnableLinks)"\r
103       ImportDeclareParametersItems="$(_MSDeployParametersFilePath)"\r
104       ReplaceRuleItems="@(MsDeployReplaceRules)"\r
105       RetryAttempts="$(RetryAttemptsForDeployment)"\r
106       ExePath="$(MSDeployPath)"\r
107       />\r
108   </Target>\r
109 \r
110   <!--\r
111   ***********************************************************************************************\r
112   TARGET : _InitMSDeployPackageProperties\r
113   ***********************************************************************************************\r
114  -->\r
115 \r
116   <Target Name="_InitMSDeployPackageProperties">\r
117    \r
118     <PropertyGroup>\r
119       <DefaultPackageFileName Condition="'$(DefaultPackageFileName)'==''">$(MSBuildProjectName).zip</DefaultPackageFileName>\r
120       <PackageLocation Condition="'$(PackageLocation)' == ''">$(DesktopBuildPackageLocation)</PackageLocation>\r
121       <PackageLocation Condition="'$(PackageLocation)' == ''">$(OutputPath)</PackageLocation>\r
122       <PackageLocation Condition="'$([System.IO.Path]::GetExtension($(PackageLocation)))' == '' And !HasTrailingSlash('$(PackageLocation)')">$(PackageLocation)\</PackageLocation>\r
123       <PackageLocation Condition="'$([System.IO.Path]::GetExtension($(PackageLocation)))' == '' ">$(PackageLocation)$(DefaultPackageFileName)</PackageLocation>\r
124       <DeployIisAppPath Condition="'$(DeployIisAppPath)' ==''">Default Web Site</DeployIisAppPath>\r
125       <EnableOptimisticParameterDefaultValue Condition="'$(EnableOptimisticParameterDefaultValue)'==''">True</EnableOptimisticParameterDefaultValue>\r
126     </PropertyGroup>\r
127 \r
128     <ConvertToAbsolutePath Paths="$(PackageLocation)">\r
129       <Output TaskParameter="AbsolutePaths" PropertyName="PackageLocation"/>\r
130     </ConvertToAbsolutePath>\r
131 \r
132   </Target>\r
133   \r
134   <!--\r
135   ***********************************************************************************************\r
136   TARGET : _PrepareForMsDeployPackagePublish\r
137   ***********************************************************************************************\r
138  -->\r
139 \r
140   <Target Name="_PrepareForMsDeployPublish">\r
141 \r
142     <PropertyGroup>\r
143       <_destinationFolder Condition="'$(_destinationFolder)' == ''">$([System.IO.Path]::GetDirectoryName($(PackageLocation)))\</_destinationFolder>\r
144       <_MsDeploySourceManifestPath Condition="'$(_MsDeploySourceManifestPath)' == ''">$(_destinationFolder)$(MSBuildProjectName).SourceManifest.xml</_MsDeploySourceManifestPath>\r
145       <_MSDeployParametersFilePath Condition="'$(_MSDeployParametersFilePath)' == ''">$(_destinationFolder)$(MSBuildProjectName).Parameters.xml</_MSDeployParametersFilePath>\r
146       <_MSDeploySetParametersFilePath Condition="'$(_MSDeploySetParametersFilePath)' == ''">$(_destinationFolder)$(MSBuildProjectName).SetParameters.xml</_MSDeploySetParametersFilePath>\r
147       <_MSDeployScriptFilePath Condition="'$(_MSDeployScriptFilePath)' == ''">$(_destinationFolder)$(MSBuildProjectName).deploy.cmd</_MSDeployScriptFilePath>\r
148       <_MSDeployReadMeFilePath Condition="'$(_MSDeployReadMeFilePath)' == ''">$(_destinationFolder)$(MSBuildProjectName).deploy-readme.txt</_MSDeployReadMeFilePath>\r
149     </PropertyGroup>\r
150 \r
151     <ItemGroup>\r
152       <_PublishConfigFiles Include="$(_MsDeploySourceManifestPath);$(_MSDeployParametersFilePath);$(_MSDeploySetParametersFilePath);$(_MSDeployScriptFilePath);$(_MSDeployReadMeFilePath)" />\r
153     </ItemGroup>\r
154     \r
155     <MakeDir Directories="$(_destinationFolder)" Condition="!Exists('$(_destinationFolder)')" ContinueOnError="true"/>\r
156     <Delete Files="@(_PublishConfigFiles)" ContinueOnError="true" />\r
157     <Touch AlwaysCreate="true" Files="@(_PublishConfigFiles)" ContinueOnError="true" />\r
158   </Target>\r
159 \r
160   <!--\r
161   ***********************************************************************************************\r
162   TARGET : _CreateManifestFiles\r
163   ***********************************************************************************************\r
164  -->\r
165 \r
166   <Target Name="_CreateManifestFiles">\r
167 \r
168     <ItemGroup>\r
169       <MsDeploySourceManifest Remove="@(MsDeploySourceManifest)" />\r
170 \r
171       <MsDeploySourceManifest Include="IisApp" >\r
172         <Path>$(PublishIntermediateOutputPath)</Path>\r
173       </MsDeploySourceManifest>\r
174     </ItemGroup>\r
175 \r
176     <ItemGroup Condition="'@(_EFSQLScripts)' != ''">\r
177       <MsDeploySourceManifest Include="dbfullsql" >\r
178         <Path>%(_EFSQLScripts.Identity)</Path>\r
179       </MsDeploySourceManifest>\r
180     </ItemGroup>\r
181 \r
182     <CreateManifestFile\r
183       Manifests="@(MsDeploySourceManifest)"\r
184       ManifestFile="$(_MsDeploySourceManifestPath)" />\r
185   </Target>\r
186   \r
187     <!--\r
188   ***********************************************************************************************\r
189   TARGET : _CreateMSDeployScript\r
190   ***********************************************************************************************\r
191  -->\r
192 \r
193   <Target Name="_CreateMSDeployScript">\r
194 \r
195     <CreateMsDeployScript\r
196       Condition="'$(IsCreateMSDeployScriptDisabled)' != 'true'"\r
197       ProjectName="$(MSBuildProjectName)"\r
198       ScriptFullPath="$(_MSDeployScriptFilePath)" \r
199       ReadMeFullPath="$(_MSDeployReadMeFilePath)"/>\r
200       \r
201   </Target>\r
202 \r
203   <!--\r
204   ***********************************************************************************************\r
205   TARGET : _CreateParameterFiles\r
206   ***********************************************************************************************\r
207  -->\r
208 \r
209   <Target Name="_CreateParameterFiles">\r
210 \r
211     <ItemGroup>\r
212       <MsDeployDeclareParameters Remove="@(MsDeployDeclareParameters)" />\r
213 \r
214       <MsDeployDeclareParameters Include="IIS Web Application Name" >\r
215         <Kind>ProviderPath</Kind>\r
216         <Scope>IisApp</Scope>\r
217         <Match>$(PublishIntermediateOutputPath)</Match>\r
218         <Description></Description>\r
219         <DefaultValue>$(DeployIisAppPath)</DefaultValue>\r
220         <Value>$(DeployIisAppPath)</Value>\r
221         <Tags>IisApp</Tags>\r
222         <Priority></Priority>\r
223         <ExcludeFromSetParameter>false</ExcludeFromSetParameter>\r
224       </MsDeployDeclareParameters>\r
225     </ItemGroup>\r
226 \r
227     <ItemGroup Condition="'@(_EFSQLScripts)' != ''">\r
228       <MsDeployDeclareParameters Include="%(_EFSQLScripts.DBContext)">\r
229         <Kind>ProviderPath</Kind>\r
230         <Scope>dbfullsql</Scope>\r
231         <Match>%(_EFSQLScripts.Identity)</Match>\r
232         <Description></Description>\r
233         <DefaultValue>%(_EFSQLScripts.ConnectionString)</DefaultValue>\r
234         <Value>%(_EFSQLScripts.ConnectionString)</Value>\r
235         <Tags>dbfullsql</Tags>\r
236         <Priority></Priority>\r
237         <ExcludeFromSetParameter>false</ExcludeFromSetParameter>\r
238       </MsDeployDeclareParameters>\r
239     </ItemGroup>\r
240 \r
241     <CreateParameterFile\r
242       Parameters="@(MsDeployDeclareParameters)"\r
243       DeclareSetParameterFile="$(_MSDeployParametersFilePath)"\r
244       IncludeDefaultValue="True"\r
245       OptimisticParameterDefaultValue="$(EnableOptimisticParameterDefaultValue)"\r
246       SetParameterFile="$(_MSDeploySetParametersFilePath)"\r
247       GenerateFileEvenIfEmpty="True" />\r
248   </Target>\r
249 \r
250   <!--\r
251   ***********************************************************************************************\r
252   Item Definitions\r
253   ***********************************************************************************************\r
254  -->\r
255 \r
256   <ItemDefinitionGroup>\r
257     <MsDeploySourceProviderSetting>\r
258       <Path></Path>\r
259       <ComputerName></ComputerName>\r
260       <!--<Wmsvc></Wmsvc>  Not supported yet-->\r
261       <UserName></UserName>\r
262       <Password></Password>\r
263       <EncryptPassword></EncryptPassword>\r
264       <IncludeAcls></IncludeAcls>\r
265       <authType></authType>\r
266       <prefetchPayload></prefetchPayload>\r
267     </MsDeploySourceProviderSetting>\r
268   </ItemDefinitionGroup>\r
269   \r
270   <ItemDefinitionGroup>\r
271     <MsDeployDestinationProviderSetting>\r
272       <Path></Path>\r
273       <ComputerName></ComputerName>\r
274       <!--<Wmsvc></Wmsvc>  Not supported yet-->\r
275       <UserName></UserName>\r
276       <Password></Password>\r
277       <EncryptPassword></EncryptPassword>\r
278       <IncludeAcls></IncludeAcls>\r
279       <authType></authType>\r
280       <prefetchPayload></prefetchPayload>\r
281     </MsDeployDestinationProviderSetting>\r
282   </ItemDefinitionGroup>\r
283   \r
284   <!--\r
285   DeploymentSkipRule(string skipAction, string objectName, string absolutePath, string XPath);-->\r
286   <ItemDefinitionGroup>\r
287     <MsDeploySkipRules>\r
288       <SkipAction></SkipAction>\r
289       <ObjectName></ObjectName>\r
290       <AbsolutePath></AbsolutePath>\r
291       <XPath></XPath>\r
292       <KeyAttribute></KeyAttribute>\r
293       <!--Source, Destination, Both(the default)-->\r
294       <Apply></Apply>\r
295     </MsDeploySkipRules>\r
296   </ItemDefinitionGroup>\r
297 \r
298   <!-- AdditionalProviderSettings denote the additionProviderSetting need to be set in the manifest files-->\r
299   <ItemDefinitionGroup>\r
300     <MsDeploySourceManifest>\r
301       <Path>Unknown</Path>\r
302       <AdditionalProviderSettings></AdditionalProviderSettings>\r
303     </MsDeploySourceManifest>\r
304   </ItemDefinitionGroup>\r
305 </Project>\r