5d7e704978727024a735a7809935fac10df3a195
[platform/core/dotnet/build-tools.git] /
1 <!--\r
2 ***********************************************************************************************\r
3 Microsoft.NET.Sdk.Publish.MSDeploy.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="GetPassword" AssemblyFile="$(_PublishTaskAssemblyFullPath)" />\r
29 \r
30   <PropertyGroup>\r
31     <_DotNetPublishFiles>\r
32       MSDeployPublish;\r
33     </_DotNetPublishFiles>\r
34   </PropertyGroup>\r
35 \r
36   <!--\r
37   ***********************************************************************************************\r
38   TARGET : MSDeployPublish\r
39   ***********************************************************************************************\r
40  -->\r
41   <PropertyGroup>\r
42     <MSDeployPublishDependsOn>\r
43       $(MSDeployPublishDependsOn);\r
44       _PrepareForMsDeployPublish;\r
45       _CreateManifestFiles;\r
46       _CreateParameterFiles;\r
47     </MSDeployPublishDependsOn>\r
48   </PropertyGroup>\r
49 \r
50   <Target Name="MSDeployPublish" DependsOnTargets="$(MSDeployPublishDependsOn)">\r
51     <ValidateParameter\r
52         ParameterName="MsDeployServiceUrl"\r
53         ParameterValue="$(MsDeployServiceUrl)"/>\r
54 \r
55     <ValidateParameter\r
56     ParameterName="DeployIisAppPath"\r
57     ParameterValue="$(DeployIisAppPath)"/>\r
58 \r
59     <PropertyGroup>\r
60       <MSDeployPublishSourceType>manifest</MSDeployPublishSourceType>\r
61       <MSDeployPublishSourceRoot>$(_MsDeploySourceManifestPath)</MSDeployPublishSourceRoot>\r
62       <!--Destination is alway a manifest-->\r
63       <MSDeployPublishDestinationType>auto</MSDeployPublishDestinationType>\r
64       <MSDeployPublishDestinationRoot></MSDeployPublishDestinationRoot>\r
65       <PublishEnableLinks Condition="'$(PublishEnableLinks)' == ''"></PublishEnableLinks>\r
66       <PublishDisableLinks Condition="'$(PublishDisableLinks)' == ''">AppPoolExtension;ContentExtension;CertificateExtension</PublishDisableLinks>\r
67       <RetryAttemptsForDeployment Condition=" '$(RetryAttemptsForDeployment)' == '' ">2</RetryAttemptsForDeployment>\r
68       <MSDeployUseChecksum Condition=" '$(MSDeployUseChecksum)' == '' ">false</MSDeployUseChecksum>\r
69       <AllowUntrustedCertificate Condition=" '$(AllowUntrustedCertificate)' == '' ">false</AllowUntrustedCertificate>\r
70       <EnableOptimisticParameterDefaultValue Condition="$(EnableOptimisticParameterDefaultValue) == ''">true</EnableOptimisticParameterDefaultValue>\r
71       <!-- Forcing File preview to be a boolean value -->\r
72       <FilePreview Condition="'$(FilePreview)' != 'true'">false</FilePreview>\r
73       <NormalizePublishSettings Condition="'$(NormalizePublishSettings)'==''">true</NormalizePublishSettings>\r
74       <AuthType Condition="'$(AuthType)'==''" >Basic</AuthType>\r
75       <!-- Supported value for $(MSDeployPublishMethod): WMSVC, RemoteAgent, InProc -->\r
76       <MSDeployPublishMethod Condition="'$(MSDeployPublishMethod)'==''" >WMSVC</MSDeployPublishMethod>\r
77       <!-- AppOffline support is enabled by default for WMSVC-->\r
78       <EnableMSDeployAppOffline Condition="'$(EnableMSDeployAppOffline)' == '' And '$(MSDeployPublishMethod)' == 'WMSVC' ">true</EnableMSDeployAppOffline>\r
79       <_UseWMSVC>false</_UseWMSVC>\r
80       <_UseWMSVC Condition="'$(MSDeployPublishMethod)'=='WMSVC'">true</_UseWMSVC>\r
81       <_UseRemoteAgent>false</_UseRemoteAgent>\r
82       <_UseRemoteAgent Condition="'$(MSDeployPublishMethod)'=='RemoteAgent'">true</_UseRemoteAgent>\r
83 \r
84       <!-- UserAgent string sent to msdeploy -->\r
85       <_MSDeployUserAgentSource>CmdLine</_MSDeployUserAgentSource>\r
86       <_MSDeployUserAgent>VS$(_MSDeployUserAgentSource)</_MSDeployUserAgent>\r
87       <!-- MsDeploy Api is not supported for core yet -->\r
88       <UseMsDeployExe Condition="'$(UseMsDeployExe)' == '' And '$(MSBuildRuntimeType)' == 'Core'">true</UseMsDeployExe>\r
89     </PropertyGroup>\r
90 \r
91     <CreateProperty Value="NTLM" Condition="!$(_UseWMSVC) And $(NormalizePublishSettings)">\r
92       <Output TaskParameter="Value" PropertyName="AuthType"/>\r
93     </CreateProperty>\r
94 \r
95     <!-- Normalize service url such as convert a server name to format like https://<server>:8172/msdeploy.axd-->\r
96     <NormalizeServiceUrl \r
97       ServiceUrl="$(MsDeployServiceUrl)" \r
98       UseWMSVC="$(_UseWMSVC)" \r
99       UseRemoteAgent="$(_UseRemoteAgent)" \r
100       SiteName="$(DeployIisAppPath)"\r
101       Condition="$(NormalizePublishSettings) == 'true'" >\r
102       <Output TaskParameter="ResultUrl" PropertyName="MsDeployServiceUrl" />\r
103     </NormalizeServiceUrl>\r
104 \r
105     <GetPassword\r
106       EncryptedPassword ="$(EncryptedPassword)"\r
107       Condition="'$(Password)' == '' And '$(IsGetPasswordEnabled)' == 'true'">\r
108       <Output TaskParameter="ClearPassword" PropertyName="Password"/>\r
109     </GetPassword>\r
110     \r
111     <!--  Data Passed to MSDeploy -->\r
112     <ItemGroup>\r
113       <MsDeploySourceProviderSetting Remove="@(MsDeploySourceProviderSetting)" />\r
114       <MsDeploySourceProviderSetting Include="$(MSDeployPublishSourceType)">\r
115         <Path>$(MSDeployPublishSourceRoot)</Path>\r
116       </MsDeploySourceProviderSetting>\r
117 \r
118       <MsDeployDestinationProviderSetting Remove="@(MsDeployDestinationProviderSetting)" />\r
119       <MsDeployDestinationProviderSetting Include="$(MSDeployPublishDestinationType)">\r
120         <Path>$(MSDeployPublishDestinationRoot)</Path>\r
121         <ComputerName>$(MsDeployServiceUrl)</ComputerName>\r
122         <UserName>$(UserName)</UserName>\r
123         <Password>$(Password)</Password>\r
124         <EncryptPassword>$(DeployEncryptKey)</EncryptPassword>\r
125         <IncludeAcls>False</IncludeAcls>\r
126         <AuthType>$(AuthType)</AuthType>\r
127       </MsDeployDestinationProviderSetting>\r
128     </ItemGroup>\r
129 \r
130     <!-- Additional destination provider settings -->\r
131     <ItemGroup>\r
132       <MsDeployAdditionalDestinationProviderSettings Include="$(MSDeployEncryptProviderName)">\r
133         <Name>WebConfigEncryptProvider</Name>\r
134         <Value>$(MSDeployWebConfigEncryptProvider)</Value>\r
135       </MsDeployAdditionalDestinationProviderSettings>\r
136     </ItemGroup>\r
137 \r
138     <VSMSDeploy\r
139         Condition="'$(UseMsdeployExe)' != 'true'"\r
140         Source="@(MsDeploySourceProviderSetting)"\r
141         Destination="@(MsDeployDestinationProviderSetting)"\r
142         DisableLink="$(PublishDisableLinks)"\r
143         EnableLink="$(PublishEnableLinks)"\r
144         AllowUntrustedCertificate="$(AllowUntrustedCertificate)"\r
145         SkipExtraFilesOnServer="$(SkipExtraFilesOnServer)"\r
146         SkipRuleItems="@(MsDeploySkipRules)"\r
147         ImportSetParametersItems="$(_MSDeployParametersFilePath)"\r
148         WhatIf="$(FilePreview)"\r
149         RetryAttempts="$(RetryAttemptsForDeployment)"\r
150         EnableMSDeployBackup="$(EnableMSDeployBackup)"\r
151         EnableMSDeployAppOffline="$(EnableMSDeployAppOffline)"\r
152         AdditionalDestinationProviderOptions="@(MsDeployAdditionalDestinationProviderSettings)"\r
153         UseChecksum="$(MSDeployUseChecksum)"\r
154         UserAgent="$(_MSDeployUserAgent)">\r
155       <Output TaskParameter="Result" PropertyName="_PublishResult" />\r
156     </VSMSDeploy>\r
157 \r
158     <ItemGroup>\r
159       <_EnableRuleListItems Condition="'$(SkipExtraFilesOnServer)' == 'true'" Include="DoNotDeleteRule" />\r
160       <_EnableRuleListItems Condition="'$(EnableMSDeployAppOffline)' == 'true'" Include="AppOffline" />\r
161       <_EnableRuleListItems Condition="'$(MSDeployEnableWebConfigEncryptRule)' == 'true'" Include="EncryptWebConfig" />\r
162     </ItemGroup>\r
163 \r
164     <PropertyGroup>\r
165       <_EnableRuleList>@(_EnableRuleListItems)</_EnableRuleList>\r
166     </PropertyGroup>\r
167     \r
168     <MSdeploy\r
169           Condition="'$(UseMsdeployExe)' == 'true'"\r
170           Verb="sync"\r
171           WhatIf="$(FilePreview)"\r
172           Source="@(MsDeploySourceProviderSetting)"\r
173           Destination="@(MsDeployDestinationProviderSetting)"\r
174           DisableLink="$(PublishDisableLinks)"\r
175           EnableLink="$(PublishEnableLinks)"\r
176           EnableRule="$(_EnableRuleList)"\r
177           AllowUntrusted="$(AllowUntrustedCertificate)"\r
178           SkipRuleItems="@(MsDeploySkipRules)"\r
179           ImportSetParametersItems="$(_MSDeployParametersFilePath)"\r
180           RetryAttempts="$(RetryAttemptsForDeployment)"\r
181           AdditionalDestinationProviderOptions="@(MsDeployAdditionalDestinationProviderSettings)"\r
182           UseChecksum="$(MSDeployUseChecksum)"\r
183           UserAgent="$(_MSDeployUserAgent)"\r
184           ExePath="$(MSDeployPath)" />\r
185   </Target>\r
186 \r
187   <!--\r
188   ***********************************************************************************************\r
189   TARGET : _PrepareForMsDeployPublish\r
190   ***********************************************************************************************\r
191  -->\r
192 \r
193   <Target Name="_PrepareForMsDeployPublish">\r
194 \r
195     <PropertyGroup>\r
196       <_MsDeploySourceManifestPath Condition="'$(_MsDeploySourceManifestPath)' == ''">$(PublishIntermediateTempPath)$(MSBuildProjectName).SourceManifest.xml</_MsDeploySourceManifestPath>\r
197       <_MSDeployParametersFilePath Condition="'$(_MSDeployParametersFilePath)' == ''">$(PublishIntermediateTempPath)$(MSBuildProjectName).Parameters.xml</_MSDeployParametersFilePath>\r
198     </PropertyGroup>\r
199 \r
200     <ItemGroup>\r
201       <_PublishConfigFiles Include="$(_MsDeploySourceManifestPath);$(_MSDeployParametersFilePath)" />\r
202     </ItemGroup>\r
203 \r
204     <MakeDir Directories="$(PublishIntermediateTempPath)" Condition="!Exists('$(PublishIntermediateTempPath)')" ContinueOnError="true"/>\r
205     <Delete Files="@(_PublishConfigFiles)" ContinueOnError="true" />\r
206     <Touch AlwaysCreate="true" Files="@(_PublishConfigFiles)" ContinueOnError="true" />\r
207   </Target>\r
208 \r
209   <!--\r
210   ***********************************************************************************************\r
211   TARGET : _CreateManifestFiles\r
212   ***********************************************************************************************\r
213  -->\r
214 \r
215   <Target Name="_CreateManifestFiles">\r
216 \r
217     <ItemGroup>\r
218       <MsDeploySourceManifest Remove="@(MsDeploySourceManifest)" />\r
219 \r
220       <MsDeploySourceManifest Include="IisApp" >\r
221         <Path>$(PublishIntermediateOutputPath)</Path>\r
222       </MsDeploySourceManifest>\r
223     </ItemGroup>\r
224     \r
225     <ItemGroup Condition="'@(_EFSQLScripts)' != ''">\r
226       <MsDeploySourceManifest Include="dbfullsql" >\r
227         <Path>%(_EFSQLScripts.Identity)</Path>\r
228       </MsDeploySourceManifest>\r
229     </ItemGroup>\r
230 \r
231     <CreateManifestFile\r
232       Manifests="@(MsDeploySourceManifest)"\r
233       ManifestFile="$(_MsDeploySourceManifestPath)" />\r
234   </Target>\r
235 \r
236   <!--\r
237   ***********************************************************************************************\r
238   TARGET : _CreateParameterFiles\r
239   ***********************************************************************************************\r
240  -->\r
241 \r
242   <Target Name="_CreateParameterFiles">\r
243 \r
244     <ItemGroup>\r
245       <MsDeployDeclareParameters Remove="@(MsDeployDeclareParameters)" />\r
246 \r
247       <MsDeployDeclareParameters Include="IIS Web Application Name" >\r
248         <Kind>ProviderPath</Kind>\r
249         <Scope>IisApp</Scope>\r
250         <Match>$(PublishIntermediateOutputPath)</Match>\r
251         <Description></Description>\r
252         <DefaultValue>$(DeployIisAppPath)</DefaultValue>\r
253         <Value>$(DeployIisAppPath)</Value>\r
254         <Tags>IisApp</Tags>\r
255         <Priority></Priority>\r
256         <ExcludeFromSetParameter>false</ExcludeFromSetParameter>\r
257       </MsDeployDeclareParameters>\r
258     </ItemGroup>\r
259     \r
260     <ItemGroup Condition="'@(_EFSQLScripts)' != ''">\r
261       <MsDeployDeclareParameters Include="%(_EFSQLScripts.DBContext)">\r
262         <Kind>ProviderPath</Kind>\r
263         <Scope>dbfullsql</Scope>\r
264         <Match>%(_EFSQLScripts.Identity)</Match>\r
265         <Description></Description>\r
266         <DefaultValue>%(_EFSQLScripts.ConnectionString)</DefaultValue>\r
267         <Value>%(_EFSQLScripts.ConnectionString)</Value>\r
268         <Tags>dbfullsql</Tags>\r
269         <Priority></Priority>\r
270         <ExcludeFromSetParameter>false</ExcludeFromSetParameter>\r
271       </MsDeployDeclareParameters>\r
272     </ItemGroup>\r
273 \r
274     <CreateParameterFile\r
275       Parameters="@(MsDeployDeclareParameters)"\r
276       DeclareSetParameterFile="$(_MSDeployParametersFilePath)"\r
277       IncludeDefaultValue="True"\r
278       GenerateFileEvenIfEmpty="True" />\r
279 \r
280   </Target>\r
281 \r
282   <!--\r
283   ***********************************************************************************************\r
284   Item Definitions\r
285   ***********************************************************************************************\r
286  -->\r
287 \r
288   <ItemDefinitionGroup>\r
289     <MsDeploySourceProviderSetting>\r
290       <Path></Path>\r
291       <ComputerName></ComputerName>\r
292       <!--<Wmsvc></Wmsvc>  Not supported yet-->\r
293       <UserName></UserName>\r
294       <Password></Password>\r
295       <EncryptPassword></EncryptPassword>\r
296       <IncludeAcls></IncludeAcls>\r
297       <authType></authType>\r
298       <prefetchPayload></prefetchPayload>\r
299     </MsDeploySourceProviderSetting>\r
300   </ItemDefinitionGroup>\r
301 \r
302   <ItemDefinitionGroup>\r
303     <MsDeployDestinationProviderSetting>\r
304       <Path></Path>\r
305       <ComputerName></ComputerName>\r
306       <!--<Wmsvc></Wmsvc>  Not supported yet-->\r
307       <UserName></UserName>\r
308       <Password></Password>\r
309       <EncryptPassword></EncryptPassword>\r
310       <IncludeAcls></IncludeAcls>\r
311       <authType></authType>\r
312       <prefetchPayload></prefetchPayload>\r
313     </MsDeployDestinationProviderSetting>\r
314   </ItemDefinitionGroup>\r
315 \r
316   <!--\r
317   DeploymentSkipRule(string skipAction, string objectName, string absolutePath, string XPath);-->\r
318   <ItemDefinitionGroup>\r
319     <MsDeploySkipRules>\r
320       <SkipAction></SkipAction>\r
321       <ObjectName></ObjectName>\r
322       <AbsolutePath></AbsolutePath>\r
323       <XPath></XPath>\r
324       <KeyAttribute></KeyAttribute>\r
325       <!--Source, Destination, Both(the default)-->\r
326       <Apply></Apply>\r
327     </MsDeploySkipRules>\r
328   </ItemDefinitionGroup>\r
329 \r
330   <!-- AdditionalProviderSettings denote the additionProviderSetting need to be set in the manifest files-->\r
331   <ItemDefinitionGroup>\r
332     <MsDeploySourceManifest>\r
333       <Path>Unknown</Path>\r
334       <AdditionalProviderSettings></AdditionalProviderSettings>\r
335     </MsDeploySourceManifest>\r
336   </ItemDefinitionGroup>\r
337 \r
338   <!--\r
339   DeploymentParameter(string name, string type, string scope, string match, string description, string defaultValue); -->\r
340   <ItemDefinitionGroup>\r
341     <MsDeployDeclareParameters>\r
342       <Kind></Kind>\r
343       <Scope></Scope>\r
344       <Match></Match>\r
345       <Description></Description>\r
346       <DefaultValue></DefaultValue>\r
347       <Tags></Tags>\r
348       <ExcludeFromSetParameter></ExcludeFromSetParameter>\r
349     </MsDeployDeclareParameters>\r
350   </ItemDefinitionGroup>\r
351 \r
352 </Project>\r