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
89 <CreateProperty Value="NTLM" Condition="!$(_UseWMSVC) And $(NormalizePublishSettings)">
\r
90 <Output TaskParameter="Value" PropertyName="AuthType"/>
\r
93 <!-- Normalize service url such as convert a server name to format like https://<server>:8172/msdeploy.axd-->
\r
94 <NormalizeServiceUrl
\r
95 ServiceUrl="$(MsDeployServiceUrl)"
\r
96 UseWMSVC="$(_UseWMSVC)"
\r
97 UseRemoteAgent="$(_UseRemoteAgent)"
\r
98 SiteName="$(DeployIisAppPath)"
\r
99 Condition="$(NormalizePublishSettings) == 'true'" >
\r
100 <Output TaskParameter="ResultUrl" PropertyName="MsDeployServiceUrl" />
\r
101 </NormalizeServiceUrl>
\r
104 EncryptedPassword ="$(EncryptedPassword)"
\r
105 Condition="'$(Password)' == '' And '$(IsGetPasswordEnabled)' == 'true'">
\r
106 <Output TaskParameter="ClearPassword" PropertyName="Password"/>
\r
109 <!-- Data Passed to MSDeploy -->
\r
111 <MsDeploySourceProviderSetting Remove="@(MsDeploySourceProviderSetting)" />
\r
112 <MsDeploySourceProviderSetting Include="$(MSDeployPublishSourceType)">
\r
113 <Path>$(MSDeployPublishSourceRoot)</Path>
\r
114 </MsDeploySourceProviderSetting>
\r
116 <MsDeployDestinationProviderSetting Remove="@(MsDeployDestinationProviderSetting)" />
\r
117 <MsDeployDestinationProviderSetting Include="$(MSDeployPublishDestinationType)">
\r
118 <Path>$(MSDeployPublishDestinationRoot)</Path>
\r
119 <ComputerName>$(MsDeployServiceUrl)</ComputerName>
\r
120 <UserName>$(UserName)</UserName>
\r
121 <Password>$(Password)</Password>
\r
122 <EncryptPassword>$(DeployEncryptKey)</EncryptPassword>
\r
123 <IncludeAcls>False</IncludeAcls>
\r
124 <AuthType>$(AuthType)</AuthType>
\r
125 </MsDeployDestinationProviderSetting>
\r
128 <!-- Additional destination provider settings -->
\r
130 <MsDeployAdditionalDestinationProviderSettings Include="$(MSDeployEncryptProviderName)">
\r
131 <Name>WebConfigEncryptProvider</Name>
\r
132 <Value>$(MSDeployWebConfigEncryptProvider)</Value>
\r
133 </MsDeployAdditionalDestinationProviderSettings>
\r
137 Condition="'$(UseMsdeployExe)' != 'true'"
\r
138 Source="@(MsDeploySourceProviderSetting)"
\r
139 Destination="@(MsDeployDestinationProviderSetting)"
\r
140 DisableLink="$(PublishDisableLinks)"
\r
141 EnableLink="$(PublishEnableLinks)"
\r
142 AllowUntrustedCertificate="$(AllowUntrustedCertificate)"
\r
143 SkipExtraFilesOnServer="$(SkipExtraFilesOnServer)"
\r
144 SkipRuleItems="@(MsDeploySkipRules)"
\r
145 ImportSetParametersItems="$(_MSDeployParametersFilePath)"
\r
146 WhatIf="$(FilePreview)"
\r
147 RetryAttempts="$(RetryAttemptsForDeployment)"
\r
148 EnableMSDeployBackup="$(EnableMSDeployBackup)"
\r
149 EnableMSDeployAppOffline="$(EnableMSDeployAppOffline)"
\r
150 AdditionalDestinationProviderOptions="@(MsDeployAdditionalDestinationProviderSettings)"
\r
151 UseChecksum="$(MSDeployUseChecksum)"
\r
152 UserAgent="$(_MSDeployUserAgent)">
\r
153 <Output TaskParameter="Result" PropertyName="_PublishResult" />
\r
157 <_EnableRuleListItems Condition="'$(SkipExtraFilesOnServer)' == 'true'" Include="DoNotDeleteRule" />
\r
158 <_EnableRuleListItems Condition="'$(EnableMSDeployAppOffline)' == 'true'" Include="AppOffline" />
\r
159 <_EnableRuleListItems Condition="'$(MSDeployEnableWebConfigEncryptRule)' == 'true'" Include="EncryptWebConfig" />
\r
163 <_EnableRuleList>@(_EnableRuleListItems)</_EnableRuleList>
\r
167 Condition="'$(UseMsdeployExe)' == 'true'"
\r
169 WhatIf="$(FilePreview)"
\r
170 Source="@(MsDeploySourceProviderSetting)"
\r
171 Destination="@(MsDeployDestinationProviderSetting)"
\r
172 DisableLink="$(PublishDisableLinks)"
\r
173 EnableLink="$(PublishEnableLinks)"
\r
174 EnableRule="$(_EnableRuleList)"
\r
175 AllowUntrusted="$(AllowUntrustedCertificate)"
\r
176 SkipRuleItems="@(MsDeploySkipRules)"
\r
177 ImportSetParametersItems="$(_MSDeployParametersFilePath)"
\r
178 RetryAttempts="$(RetryAttemptsForDeployment)"
\r
179 AdditionalDestinationProviderOptions="@(MsDeployAdditionalDestinationProviderSettings)"
\r
180 UseChecksum="$(MSDeployUseChecksum)"
\r
181 UserAgent="$(_MSDeployUserAgent)"
\r
182 ExePath="$(MSDeployPath)" />
\r
186 ***********************************************************************************************
\r
187 TARGET : _PrepareForMsDeployPublish
\r
188 ***********************************************************************************************
\r
191 <Target Name="_PrepareForMsDeployPublish">
\r
194 <_MsDeploySourceManifestPath Condition="'$(_MsDeploySourceManifestPath)' == ''">$(PublishIntermediateTempPath)$(MSBuildProjectName).SourceManifest.xml</_MsDeploySourceManifestPath>
\r
195 <_MSDeployParametersFilePath Condition="'$(_MSDeployParametersFilePath)' == ''">$(PublishIntermediateTempPath)$(MSBuildProjectName).Parameters.xml</_MSDeployParametersFilePath>
\r
199 <_PublishConfigFiles Include="$(_MsDeploySourceManifestPath);$(_MSDeployParametersFilePath)" />
\r
202 <MakeDir Directories="$(PublishIntermediateTempPath)" Condition="!Exists('$(PublishIntermediateTempPath)')" ContinueOnError="true"/>
\r
203 <Delete Files="@(_PublishConfigFiles)" ContinueOnError="true" />
\r
204 <Touch AlwaysCreate="true" Files="@(_PublishConfigFiles)" ContinueOnError="true" />
\r
208 ***********************************************************************************************
\r
209 TARGET : _CreateManifestFiles
\r
210 ***********************************************************************************************
\r
213 <Target Name="_CreateManifestFiles">
\r
216 <MsDeploySourceManifest Remove="@(MsDeploySourceManifest)" />
\r
218 <MsDeploySourceManifest Include="IisApp" >
\r
219 <Path>$(PublishIntermediateOutputPath)</Path>
\r
220 </MsDeploySourceManifest>
\r
223 <ItemGroup Condition="'@(_EFSQLScripts)' != ''">
\r
224 <MsDeploySourceManifest Include="dbfullsql" >
\r
225 <Path>%(_EFSQLScripts.Identity)</Path>
\r
226 </MsDeploySourceManifest>
\r
229 <CreateManifestFile
\r
230 Manifests="@(MsDeploySourceManifest)"
\r
231 ManifestFile="$(_MsDeploySourceManifestPath)" />
\r
235 ***********************************************************************************************
\r
236 TARGET : _CreateParameterFiles
\r
237 ***********************************************************************************************
\r
240 <Target Name="_CreateParameterFiles">
\r
243 <MsDeployDeclareParameters Remove="@(MsDeployDeclareParameters)" />
\r
245 <MsDeployDeclareParameters Include="IIS Web Application Name" >
\r
246 <Kind>ProviderPath</Kind>
\r
247 <Scope>IisApp</Scope>
\r
248 <Match>$(PublishIntermediateOutputPath)</Match>
\r
249 <Description></Description>
\r
250 <DefaultValue>$(DeployIisAppPath)</DefaultValue>
\r
251 <Value>$(DeployIisAppPath)</Value>
\r
252 <Tags>IisApp</Tags>
\r
253 <Priority></Priority>
\r
254 <ExcludeFromSetParameter>false</ExcludeFromSetParameter>
\r
255 </MsDeployDeclareParameters>
\r
258 <ItemGroup Condition="'@(_EFSQLScripts)' != ''">
\r
259 <MsDeployDeclareParameters Include="%(_EFSQLScripts.DBContext)">
\r
260 <Kind>ProviderPath</Kind>
\r
261 <Scope>dbfullsql</Scope>
\r
262 <Match>%(_EFSQLScripts.Identity)</Match>
\r
263 <Description></Description>
\r
264 <DefaultValue>%(_EFSQLScripts.ConnectionString)</DefaultValue>
\r
265 <Value>%(_EFSQLScripts.ConnectionString)</Value>
\r
266 <Tags>dbfullsql</Tags>
\r
267 <Priority></Priority>
\r
268 <ExcludeFromSetParameter>false</ExcludeFromSetParameter>
\r
269 </MsDeployDeclareParameters>
\r
272 <CreateParameterFile
\r
273 Parameters="@(MsDeployDeclareParameters)"
\r
274 DeclareSetParameterFile="$(_MSDeployParametersFilePath)"
\r
275 IncludeDefaultValue="True"
\r
276 GenerateFileEvenIfEmpty="True" />
\r
281 ***********************************************************************************************
\r
283 ***********************************************************************************************
\r
286 <ItemDefinitionGroup>
\r
287 <MsDeploySourceProviderSetting>
\r
289 <ComputerName></ComputerName>
\r
290 <!--<Wmsvc></Wmsvc> Not supported yet-->
\r
291 <UserName></UserName>
\r
292 <Password></Password>
\r
293 <EncryptPassword></EncryptPassword>
\r
294 <IncludeAcls></IncludeAcls>
\r
295 <authType></authType>
\r
296 <prefetchPayload></prefetchPayload>
\r
297 </MsDeploySourceProviderSetting>
\r
298 </ItemDefinitionGroup>
\r
300 <ItemDefinitionGroup>
\r
301 <MsDeployDestinationProviderSetting>
\r
303 <ComputerName></ComputerName>
\r
304 <!--<Wmsvc></Wmsvc> Not supported yet-->
\r
305 <UserName></UserName>
\r
306 <Password></Password>
\r
307 <EncryptPassword></EncryptPassword>
\r
308 <IncludeAcls></IncludeAcls>
\r
309 <authType></authType>
\r
310 <prefetchPayload></prefetchPayload>
\r
311 </MsDeployDestinationProviderSetting>
\r
312 </ItemDefinitionGroup>
\r
315 DeploymentSkipRule(string skipAction, string objectName, string absolutePath, string XPath);-->
\r
316 <ItemDefinitionGroup>
\r
317 <MsDeploySkipRules>
\r
318 <SkipAction></SkipAction>
\r
319 <ObjectName></ObjectName>
\r
320 <AbsolutePath></AbsolutePath>
\r
322 <KeyAttribute></KeyAttribute>
\r
323 <!--Source, Destination, Both(the default)-->
\r
325 </MsDeploySkipRules>
\r
326 </ItemDefinitionGroup>
\r
328 <!-- AdditionalProviderSettings denote the additionProviderSetting need to be set in the manifest files-->
\r
329 <ItemDefinitionGroup>
\r
330 <MsDeploySourceManifest>
\r
331 <Path>Unknown</Path>
\r
332 <AdditionalProviderSettings></AdditionalProviderSettings>
\r
333 </MsDeploySourceManifest>
\r
334 </ItemDefinitionGroup>
\r
337 DeploymentParameter(string name, string type, string scope, string match, string description, string defaultValue); -->
\r
338 <ItemDefinitionGroup>
\r
339 <MsDeployDeclareParameters>
\r
343 <Description></Description>
\r
344 <DefaultValue></DefaultValue>
\r
346 <ExcludeFromSetParameter></ExcludeFromSetParameter>
\r
347 </MsDeployDeclareParameters>
\r
348 </ItemDefinitionGroup>
\r