2 ***********************************************************************************************
\r
3 Microsoft.NET.Sdk.Publish.MSDeploy.targets
\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
9 This file defines the steps in the standard build process to deploy web application projects.
\r
11 Copyright (C) Microsoft Corporation. All rights reserved.
\r
12 ***********************************************************************************************
\r
15 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
\r
18 ***********************************************************************************************
\r
20 ***********************************************************************************************
\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
31 <_DotNetPublishFiles>
\r
33 </_DotNetPublishFiles>
\r
37 ***********************************************************************************************
\r
38 TARGET : MSDeployPublish
\r
39 ***********************************************************************************************
\r
42 <MSDeployPublishDependsOn>
\r
43 $(MSDeployPublishDependsOn);
\r
44 _PrepareForMsDeployPublish;
\r
45 _CreateManifestFiles;
\r
46 _CreateParameterFiles;
\r
47 </MSDeployPublishDependsOn>
\r
50 <Target Name="MSDeployPublish" DependsOnTargets="$(MSDeployPublishDependsOn)">
\r
52 ParameterName="MsDeployServiceUrl"
\r
53 ParameterValue="$(MsDeployServiceUrl)"/>
\r
56 ParameterName="DeployIisAppPath"
\r
57 ParameterValue="$(DeployIisAppPath)"/>
\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
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
91 <CreateProperty Value="NTLM" Condition="!$(_UseWMSVC) And $(NormalizePublishSettings)">
\r
92 <Output TaskParameter="Value" PropertyName="AuthType"/>
\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
106 EncryptedPassword ="$(EncryptedPassword)"
\r
107 Condition="'$(Password)' == '' And '$(IsGetPasswordEnabled)' == 'true'">
\r
108 <Output TaskParameter="ClearPassword" PropertyName="Password"/>
\r
111 <!-- Data Passed to MSDeploy -->
\r
113 <MsDeploySourceProviderSetting Remove="@(MsDeploySourceProviderSetting)" />
\r
114 <MsDeploySourceProviderSetting Include="$(MSDeployPublishSourceType)">
\r
115 <Path>$(MSDeployPublishSourceRoot)</Path>
\r
116 </MsDeploySourceProviderSetting>
\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
130 <!-- Additional destination provider settings -->
\r
132 <MsDeployAdditionalDestinationProviderSettings Include="$(MSDeployEncryptProviderName)">
\r
133 <Name>WebConfigEncryptProvider</Name>
\r
134 <Value>$(MSDeployWebConfigEncryptProvider)</Value>
\r
135 </MsDeployAdditionalDestinationProviderSettings>
\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
159 <_EnableRuleListItems Condition="'$(SkipExtraFilesOnServer)' == 'true'" Include="DoNotDeleteRule" />
\r
160 <_EnableRuleListItems Condition="'$(EnableMSDeployAppOffline)' == 'true'" Include="AppOffline" />
\r
161 <_EnableRuleListItems Condition="'$(MSDeployEnableWebConfigEncryptRule)' == 'true'" Include="EncryptWebConfig" />
\r
165 <_EnableRuleList>@(_EnableRuleListItems)</_EnableRuleList>
\r
169 Condition="'$(UseMsdeployExe)' == 'true'"
\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
188 ***********************************************************************************************
\r
189 TARGET : _PrepareForMsDeployPublish
\r
190 ***********************************************************************************************
\r
193 <Target Name="_PrepareForMsDeployPublish">
\r
196 <_MsDeploySourceManifestPath Condition="'$(_MsDeploySourceManifestPath)' == ''">$(PublishIntermediateTempPath)$(MSBuildProjectName).SourceManifest.xml</_MsDeploySourceManifestPath>
\r
197 <_MSDeployParametersFilePath Condition="'$(_MSDeployParametersFilePath)' == ''">$(PublishIntermediateTempPath)$(MSBuildProjectName).Parameters.xml</_MSDeployParametersFilePath>
\r
201 <_PublishConfigFiles Include="$(_MsDeploySourceManifestPath);$(_MSDeployParametersFilePath)" />
\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
210 ***********************************************************************************************
\r
211 TARGET : _CreateManifestFiles
\r
212 ***********************************************************************************************
\r
215 <Target Name="_CreateManifestFiles">
\r
218 <MsDeploySourceManifest Remove="@(MsDeploySourceManifest)" />
\r
220 <MsDeploySourceManifest Include="IisApp" >
\r
221 <Path>$(PublishIntermediateOutputPath)</Path>
\r
222 </MsDeploySourceManifest>
\r
225 <ItemGroup Condition="'@(_EFSQLScripts)' != ''">
\r
226 <MsDeploySourceManifest Include="dbfullsql" >
\r
227 <Path>%(_EFSQLScripts.Identity)</Path>
\r
228 </MsDeploySourceManifest>
\r
231 <CreateManifestFile
\r
232 Manifests="@(MsDeploySourceManifest)"
\r
233 ManifestFile="$(_MsDeploySourceManifestPath)" />
\r
237 ***********************************************************************************************
\r
238 TARGET : _CreateParameterFiles
\r
239 ***********************************************************************************************
\r
242 <Target Name="_CreateParameterFiles">
\r
245 <MsDeployDeclareParameters Remove="@(MsDeployDeclareParameters)" />
\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
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
274 <CreateParameterFile
\r
275 Parameters="@(MsDeployDeclareParameters)"
\r
276 DeclareSetParameterFile="$(_MSDeployParametersFilePath)"
\r
277 IncludeDefaultValue="True"
\r
278 GenerateFileEvenIfEmpty="True" />
\r
283 ***********************************************************************************************
\r
285 ***********************************************************************************************
\r
288 <ItemDefinitionGroup>
\r
289 <MsDeploySourceProviderSetting>
\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
302 <ItemDefinitionGroup>
\r
303 <MsDeployDestinationProviderSetting>
\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
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
324 <KeyAttribute></KeyAttribute>
\r
325 <!--Source, Destination, Both(the default)-->
\r
327 </MsDeploySkipRules>
\r
328 </ItemDefinitionGroup>
\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
339 DeploymentParameter(string name, string type, string scope, string match, string description, string defaultValue); -->
\r
340 <ItemDefinitionGroup>
\r
341 <MsDeployDeclareParameters>
\r
345 <Description></Description>
\r
346 <DefaultValue></DefaultValue>
\r
348 <ExcludeFromSetParameter></ExcludeFromSetParameter>
\r
349 </MsDeployDeclareParameters>
\r
350 </ItemDefinitionGroup>
\r