2fe5dd89162b0fcf2e6e0e3c48bafc79bb886c00
[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 \r
29   <PropertyGroup>\r
30     <_DotNetPublishFiles>\r
31       MSDeployPackagePublish;\r
32     </_DotNetPublishFiles>\r
33   </PropertyGroup>\r
34 \r
35   <!--\r
36   ***********************************************************************************************\r
37   TARGET : MSDeployPackagePublish\r
38   ***********************************************************************************************\r
39  -->\r
40   <PropertyGroup>\r
41     <MSDeployPackagePublishDependsOn>\r
42       $(MSDeployPackagePublishDependsOn);\r
43       _InitMSDeployPackageLocation;\r
44       _PrepareForMsDeployPublish;\r
45       _CreateManifestFiles;\r
46       _CreateParameterFiles;\r
47     </MSDeployPackagePublishDependsOn>\r
48   </PropertyGroup>\r
49 \r
50   <Target Name="MSDeployPackagePublish" DependsOnTargets="$(MSDeployPackagePublishDependsOn)">\r
51 \r
52     <PropertyGroup>\r
53       <MSDeployPublishSourceType>manifest</MSDeployPublishSourceType>\r
54       <MSDeployPublishSourceRoot>$(_MsDeploySourceManifestPath)</MSDeployPublishSourceRoot>\r
55       <!--Destination is alway a manifest-->\r
56       <MSDeployPublishDestinationType>Package</MSDeployPublishDestinationType>\r
57       <MSDeployPublishDestinationRoot>$(PackageLocation)</MSDeployPublishDestinationRoot>\r
58       <RetryAttemptsForDeployment Condition=" '$(RetryAttemptsForDeployment)' == '' ">2</RetryAttemptsForDeployment>\r
59       <PublishEnableLinks Condition="'$(PublishEnableLinks)' == ''"></PublishEnableLinks>\r
60       <PublishDisableLinks Condition="'$(PublishDisableLinks)' == ''">AppPoolExtension;ContentExtension;CertificateExtension</PublishDisableLinks>\r
61       <!-- UserAgent string sent to msdeploy -->\r
62       <_MSDeployUserAgentSource>CmdLine</_MSDeployUserAgentSource>\r
63       <_MSDeployUserAgent>VS$(_MSDeployUserAgentSource)</_MSDeployUserAgent>\r
64       <!-- MsDeploy Api is not supported for core yet -->\r
65       <UseMsDeployExe Condition="'$(UseMsDeployExe)' == '' And '$(MSBuildRuntimeType)' == 'Core'">true</UseMsDeployExe>\r
66     </PropertyGroup>\r
67 \r
68     <!--  Data Passed to MSDeploy -->\r
69     <ItemGroup>\r
70       <MsDeploySourceProviderSetting Remove="@(MsDeploySourceProviderSetting)" />\r
71       <MsDeploySourceProviderSetting Include="$(MSDeployPublishSourceType)">\r
72         <Path>$(MSDeployPublishSourceRoot)</Path>\r
73       </MsDeploySourceProviderSetting>\r
74 \r
75       <MsDeployDestinationProviderSetting Remove="@(MsDeployDestinationProviderSetting)" />\r
76       <MsDeployDestinationProviderSetting Include="$(MSDeployPublishDestinationType)">\r
77         <Path>$(MSDeployPublishDestinationRoot)</Path>\r
78       </MsDeployDestinationProviderSetting>\r
79     </ItemGroup>\r
80 \r
81     <VSMSDeploy Condition="'$(UseMsdeployExe)' != 'true'"\r
82        MSDeployVersionsToTry="$(_MSDeployVersionsToTry)"\r
83        Source="@(MsDeploySourceProviderSetting)"\r
84        Destination="@(MsDeployDestinationProviderSetting)"\r
85        DeploymentTraceLevel="$(PackageTraceLevel)"\r
86        DisableLink="$(PublishDisableLinks)"\r
87        EnableLink="$(PublishEnableLinks)"\r
88        ImportDeclareParametersItems="$(_MSDeployParametersFilePath)"\r
89        ReplaceRuleItems="@(MsDeployReplaceRules)"\r
90        RetryAttempts="$(RetryAttemptsForDeployment)">\r
91       <Output TaskParameter="Result" PropertyName="PackageResult" />\r
92     </VSMSDeploy>\r
93 \r
94     <MSdeploy\r
95       Condition="'$(UseMsdeployExe)' == 'true'"\r
96       Verb="sync"\r
97       Source="@(MsDeploySourceProviderSetting)"\r
98       Destination="@(MsDeployDestinationProviderSetting)"\r
99       DisableLink="$(PublishDisableLinks)"\r
100       EnableLink="$(PublishEnableLinks)"\r
101       ImportDeclareParametersItems="$(_MSDeployParametersFilePath)"\r
102       ReplaceRuleItems="@(MsDeployReplaceRules)"\r
103       RetryAttempts="$(RetryAttemptsForDeployment)"\r
104       ExePath="$(MSDeployPath)"\r
105       />\r
106   </Target>\r
107 \r
108   <!--\r
109   ***********************************************************************************************\r
110   TARGET : _InitMSDeployPackageLocation\r
111   ***********************************************************************************************\r
112  -->\r
113 \r
114   <Target Name="_InitMSDeployPackageLocation">\r
115    \r
116     <PropertyGroup>\r
117       <DefaultPackageFileName Condition="'$(DefaultPackageFileName)'==''">$(MSBuildProjectName).zip</DefaultPackageFileName>\r
118       <PackageLocation Condition="'$(PackageLocation)' == ''">$(DesktopBuildPackageLocation)</PackageLocation>\r
119       <PackageLocation Condition="'$(PackageLocation)' == ''">$(OutputPath)</PackageLocation>\r
120       <PackageLocation Condition="'$([System.IO.Path]::GetExtension($(PackageLocation)))' == '' And !HasTrailingSlash('$(PackageLocation)')">$(PackageLocation)\</PackageLocation>\r
121       <PackageLocation Condition="'$([System.IO.Path]::GetExtension($(PackageLocation)))' == '' ">$(PackageLocation)$(DefaultPackageFileName)</PackageLocation>\r
122       <DeployIisAppPath Condition="'$(DeployIisAppPath)' ==''">Default Web Site</DeployIisAppPath>\r
123     </PropertyGroup>\r
124 \r
125     <ConvertToAbsolutePath Paths="$(PackageLocation)">\r
126       <Output TaskParameter="AbsolutePaths" PropertyName="PackageLocation"/>\r
127     </ConvertToAbsolutePath>\r
128 \r
129   </Target>\r
130   \r
131   <!--\r
132   ***********************************************************************************************\r
133   TARGET : _PrepareForMsDeployPackagePublish\r
134   ***********************************************************************************************\r
135  -->\r
136 \r
137   <Target Name="_PrepareForMsDeployPublish">\r
138 \r
139     <PropertyGroup>\r
140       <_destinationFolder Condition="'$(_destinationFolder)' == ''">$([System.IO.Path]::GetDirectoryName($(PackageLocation)))\</_destinationFolder>\r
141       <_MsDeploySourceManifestPath Condition="'$(_MsDeploySourceManifestPath)' == ''">$(_destinationFolder)$(MSBuildProjectName).SourceManifest.xml</_MsDeploySourceManifestPath>\r
142       <_MSDeployParametersFilePath Condition="'$(_MSDeployParametersFilePath)' == ''">$(_destinationFolder)$(MSBuildProjectName).Parameters.xml</_MSDeployParametersFilePath>\r
143     </PropertyGroup>\r
144 \r
145     <ItemGroup>\r
146       <_PublishConfigFiles Include="$(_MsDeploySourceManifestPath);$(_MSDeployParametersFilePath)" />\r
147     </ItemGroup>\r
148     \r
149     <MakeDir Directories="$(_destinationFolder)" Condition="!Exists('$(_destinationFolder)')" ContinueOnError="true"/>\r
150     <Delete Files="@(_PublishConfigFiles)" ContinueOnError="true" />\r
151     <Touch AlwaysCreate="true" Files="@(_PublishConfigFiles)" ContinueOnError="true" />\r
152   </Target>\r
153 \r
154   <!--\r
155   ***********************************************************************************************\r
156   TARGET : _CreateManifestFiles\r
157   ***********************************************************************************************\r
158  -->\r
159 \r
160   <Target Name="_CreateManifestFiles">\r
161 \r
162     <ItemGroup>\r
163       <MsDeploySourceManifest Remove="@(MsDeploySourceManifest)" />\r
164 \r
165       <MsDeploySourceManifest Include="IisApp" >\r
166         <Path>$(PublishIntermediateOutputPath)</Path>\r
167       </MsDeploySourceManifest>\r
168     </ItemGroup>\r
169 \r
170     <ItemGroup Condition="'@(_EFSQLScripts)' != ''">\r
171       <MsDeploySourceManifest Include="dbfullsql" >\r
172         <Path>%(_EFSQLScripts.Identity)</Path>\r
173       </MsDeploySourceManifest>\r
174     </ItemGroup>\r
175 \r
176     <CreateManifestFile\r
177       Manifests="@(MsDeploySourceManifest)"\r
178       ManifestFile="$(_MsDeploySourceManifestPath)" />\r
179   </Target>\r
180 \r
181   <!--\r
182   ***********************************************************************************************\r
183   TARGET : _CreateParameterFiles\r
184   ***********************************************************************************************\r
185  -->\r
186 \r
187   <Target Name="_CreateParameterFiles">\r
188 \r
189     <ItemGroup>\r
190       <MsDeployDeclareParameters Remove="@(MsDeployDeclareParameters)" />\r
191 \r
192       <MsDeployDeclareParameters Include="IIS Web Application Name" >\r
193         <Kind>ProviderPath</Kind>\r
194         <Scope>IisApp</Scope>\r
195         <Match>$(PublishIntermediateOutputPath)</Match>\r
196         <Description></Description>\r
197         <DefaultValue>$(DeployIisAppPath)</DefaultValue>\r
198         <Value>$(DeployIisAppPath)</Value>\r
199         <Tags>IisApp</Tags>\r
200         <Priority></Priority>\r
201         <ExcludeFromSetParameter>false</ExcludeFromSetParameter>\r
202       </MsDeployDeclareParameters>\r
203     </ItemGroup>\r
204 \r
205     <ItemGroup Condition="'@(_EFSQLScripts)' != ''">\r
206       <MsDeployDeclareParameters Include="%(_EFSQLScripts.DBContext)">\r
207         <Kind>ProviderPath</Kind>\r
208         <Scope>dbfullsql</Scope>\r
209         <Match>%(_EFSQLScripts.Identity)</Match>\r
210         <Description></Description>\r
211         <DefaultValue>%(_EFSQLScripts.ConnectionString)</DefaultValue>\r
212         <Value>%(_EFSQLScripts.ConnectionString)</Value>\r
213         <Tags>dbfullsql</Tags>\r
214         <Priority></Priority>\r
215         <ExcludeFromSetParameter>false</ExcludeFromSetParameter>\r
216       </MsDeployDeclareParameters>\r
217     </ItemGroup>\r
218 \r
219     <CreateParameterFile\r
220       Parameters="@(MsDeployDeclareParameters)"\r
221       DeclareSetParameterFile="$(_MSDeployParametersFilePath)"\r
222       IncludeDefaultValue="True"\r
223       GenerateFileEvenIfEmpty="True" />\r
224   </Target>\r
225 \r
226   <!--\r
227   ***********************************************************************************************\r
228   Item Definitions\r
229   ***********************************************************************************************\r
230  -->\r
231 \r
232   <ItemDefinitionGroup>\r
233     <MsDeploySourceProviderSetting>\r
234       <Path></Path>\r
235       <ComputerName></ComputerName>\r
236       <!--<Wmsvc></Wmsvc>  Not supported yet-->\r
237       <UserName></UserName>\r
238       <Password></Password>\r
239       <EncryptPassword></EncryptPassword>\r
240       <IncludeAcls></IncludeAcls>\r
241       <authType></authType>\r
242       <prefetchPayload></prefetchPayload>\r
243     </MsDeploySourceProviderSetting>\r
244   </ItemDefinitionGroup>\r
245   \r
246   <ItemDefinitionGroup>\r
247     <MsDeployDestinationProviderSetting>\r
248       <Path></Path>\r
249       <ComputerName></ComputerName>\r
250       <!--<Wmsvc></Wmsvc>  Not supported yet-->\r
251       <UserName></UserName>\r
252       <Password></Password>\r
253       <EncryptPassword></EncryptPassword>\r
254       <IncludeAcls></IncludeAcls>\r
255       <authType></authType>\r
256       <prefetchPayload></prefetchPayload>\r
257     </MsDeployDestinationProviderSetting>\r
258   </ItemDefinitionGroup>\r
259   \r
260   <!--\r
261   DeploymentSkipRule(string skipAction, string objectName, string absolutePath, string XPath);-->\r
262   <ItemDefinitionGroup>\r
263     <MsDeploySkipRules>\r
264       <SkipAction></SkipAction>\r
265       <ObjectName></ObjectName>\r
266       <AbsolutePath></AbsolutePath>\r
267       <XPath></XPath>\r
268       <KeyAttribute></KeyAttribute>\r
269       <!--Source, Destination, Both(the default)-->\r
270       <Apply></Apply>\r
271     </MsDeploySkipRules>\r
272   </ItemDefinitionGroup>\r
273 \r
274   <!-- AdditionalProviderSettings denote the additionProviderSetting need to be set in the manifest files-->\r
275   <ItemDefinitionGroup>\r
276     <MsDeploySourceManifest>\r
277       <Path>Unknown</Path>\r
278       <AdditionalProviderSettings></AdditionalProviderSettings>\r
279     </MsDeploySourceManifest>\r
280   </ItemDefinitionGroup>\r
281 </Project>\r