Microsoft.Web.Publishing.AspNetCompileMerge.targets 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767
  1. <!--
  2. ***********************************************************************************************
  3. Microsoft.Web.Publishing.AspNetCompileMerge.targets
  4. WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
  5. created a backup copy. Incorrect changes to this file will make it
  6. impossible to load or build your web deploy projects from the command-line or the IDE.
  7. This file defines the steps in the standard package/publish process for Tranform the list of file
  8. through the aspnet_compile and aspnet_merge. It will dramaticaly change the content in the list.
  9. Copyright (C) Microsoft Corporation. All rights reserved.
  10. ***********************************************************************************************
  11. -->
  12. <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  13. <!--Import task from our dll-->
  14. <UsingTask TaskName="GetPublishingLocalizedString" AssemblyFile="..\Microsoft.Web.Publishing.Tasks.dll"/>
  15. <UsingTask TaskName="CopyPipelineFiles" AssemblyFile="..\Microsoft.Web.Publishing.Tasks.dll" />
  16. <UsingTask TaskName="AspNetMerge" AssemblyFile="..\Microsoft.Web.Publishing.Tasks.dll"/>
  17. <UsingTask TaskName="GetProjectProperties" AssemblyFile="..\Microsoft.Web.Publishing.Tasks.dll"/>
  18. <UsingTask TaskName="FilterByItems" AssemblyFile="..\Microsoft.Web.Publishing.Tasks.dll"/>
  19. <UsingTask TaskName="GenerateAssemblyInfo" AssemblyFile="..\Microsoft.Web.Publishing.Tasks.dll"/>
  20. <UsingTask TaskName="CheckItemsCount" AssemblyFile="..\Microsoft.Web.Publishing.Tasks.dll"/>
  21. <!--ImportBefore Extension-->
  22. <PropertyGroup>
  23. <ImportByWildcardBeforeMicrosoftWebPublishingTransformTargets Condition="'$(ImportByWildcardBeforeMicrosoftWebPublishingTransformTargets)'==''">true</ImportByWildcardBeforeMicrosoftWebPublishingTransformTargets>
  24. </PropertyGroup>
  25. <Import Project="$(MSBuildThisFileDirectory)\$(MSBuildThisFileName)\ImportBefore\*" Condition="'$(ImportByWildcardBeforeMicrosoftWebPublishingTransformTargets)' == 'true' and exists('$(MSBuildThisFileDirectory)\$(MSBuildThisFileName)\ImportBefore')"/>
  26. <PropertyGroup>
  27. <Microsoft_Web_Publishing_AspNetCompileMerge_targets_Imported>True</Microsoft_Web_Publishing_AspNetCompileMerge_targets_Imported>
  28. </PropertyGroup>
  29. <!--********************************************************************-->
  30. <!--Enforce all item have these metadata value for all pipeline metadata-->
  31. <!--Default for Exclude is False-->
  32. <!--********************************************************************-->
  33. <ItemDefinitionGroup>
  34. <_AspnetCompileMergePrecompiledOutput>
  35. <DestinationRelativePath></DestinationRelativePath>
  36. <Exclude>False</Exclude>
  37. <FromTarget>AspNetCompilerMergePhase</FromTarget>
  38. <Category>Run</Category>
  39. <ProjectFileType>Default</ProjectFileType>
  40. </_AspnetCompileMergePrecompiledOutput>
  41. </ItemDefinitionGroup>
  42. <PropertyGroup>
  43. <AspnetCompileMergeIntermediateOutputPath Condition="'$(AspnetCompileMergeIntermediateOutputPath)' == ''">$(IntermediateOutputPath)AspnetCompileMerge\</AspnetCompileMergeIntermediateOutputPath>
  44. <AspnetCompileMergeIntermediateAssemblyInfo Condition="'$(AspnetCompileMergeIntermediateAssemblyInfo)' == ''">$(IntermediateOutputPath)AssemblyInfo\</AspnetCompileMergeIntermediateAssemblyInfo>
  45. <CopyBeforeAspnetCompileMergeTargetPath Condition="'$(CopyBeforeAspnetCompileMergeTargetPath)' == ''">$(AspnetCompileMergeIntermediateOutputPath)Source</CopyBeforeAspnetCompileMergeTargetPath>
  46. <AspnetCompileMerge_TempBuildDir Condition="'$(AspnetCompileMerge_TempBuildDir)' == ''" >$(AspnetCompileMergeIntermediateOutputPath)TempBuildDir</AspnetCompileMerge_TempBuildDir>
  47. </PropertyGroup>
  48. <PropertyGroup Condition="'$(UseMerge)' != 'true'">
  49. <_AspNetCompilerFixedNames Condition="'$(_AspNetCompilerFixedNames)' == ''">$(UseFixedNames)</_AspNetCompilerFixedNames>
  50. </PropertyGroup>
  51. <PropertyGroup Condition="'$(UseMetabasePath)' == 'true'">
  52. <_AspNetCompilerMetabasePath Condition ="'$(_AspNetCompilerMetabasePath)' == ''">$(SourceWebMetabasePath)</_AspNetCompilerMetabasePath>
  53. </PropertyGroup>
  54. <PropertyGroup Condition="'$(UseMetabasePath)' != 'true'">
  55. <_AspNetCompilerSourceWebPath Condition="'$(_AspNetCompilerSourceWebPath)' != ''">$(WebPublishPipelineProjectDirectory)</_AspNetCompilerSourceWebPath>
  56. <_AspNetCompilerVirtualPath Condition="'$(_AspNetCompilerVirtualPath)' != ''">$(SourceWebVirtualPath)</_AspNetCompilerVirtualPath>
  57. </PropertyGroup>
  58. <PropertyGroup>
  59. <_WPPCurrentBuildInfo>$(_WPPCurrentBuildInfo);PrecompileBeforePublish=$(PrecompileBeforePublish);WDPMergeOption=$(WDPMergeOption);_AspNetCompilerFixedNames=$(_AspNetCompilerFixedNames);_AspNetCompilerMetabasePath=$(_AspNetCompilerMetabasePath);Microsoft_Web_Publishing_AspNetCompileMerge_targets_Imported=$(Microsoft_Web_Publishing_AspNetCompileMerge_targets_Imported)</_WPPCurrentBuildInfo>
  60. </PropertyGroup>
  61. <!--***************************************************************-->
  62. <!--Hookinto clean target for Clean target -->
  63. <!--***************************************************************-->
  64. <PropertyGroup>
  65. <_WPPCleanTargets>
  66. $(_WPPCleanTargets);
  67. CleanAspNetCompileMergeTempDirectories;
  68. </_WPPCleanTargets>
  69. </PropertyGroup>
  70. <!--
  71. ============================================================
  72. Clean
  73. Clean target.
  74. ============================================================
  75. -->
  76. <PropertyGroup>
  77. <CleanAspNetCompileMergeTempDirectoriesDependsOn Condition="'$(CleanAspNetCompileMergeTempDirectoriesDependsOn)'==''">
  78. </CleanAspNetCompileMergeTempDirectoriesDependsOn>
  79. </PropertyGroup>
  80. <Target Name="CleanAspNetCompileMergeTempDirectories" DependsOnTargets="$(CleanAspNetCompileMergeTempDirectoriesDependsOn)">
  81. <!--
  82. Create a Clean boolean property
  83. -->
  84. <CreateProperty Value="true">
  85. <Output TaskParameter="Value" PropertyName="Clean" />
  86. </CreateProperty>
  87. <RemoveDir Condition="Exists('$(CopyBeforeAspnetCompileMergeTargetPath)')" Directories="$(CopyBeforeAspnetCompileMergeTargetPath)"/>
  88. <RemoveDir Condition="Exists('$(AspnetCompileMerge_TempBuildDir)')" Directories="$(AspnetCompileMerge_TempBuildDir)" />
  89. <RemoveDir Condition="Exists('$(AspnetCompileMergeIntermediateAssemblyInfo)')" Directories="$(AspnetCompileMergeIntermediateAssemblyInfo)" />
  90. <Delete Condition="'$(AssemblyInfoDll)' != '' And Exists($(AssemblyInfoDll))"
  91. DeletedFiles="$(AssemblyInfoDll)" ContinueOnError="true" />
  92. </Target>
  93. <!--
  94. ============================================================
  95. GetAspNetMergePath
  96. Get the paths for AspNet_Merge.exe Path.
  97. Use Framework SDK's Path. If not exist, fall back to WDP installpath.
  98. ============================================================
  99. -->
  100. <PropertyGroup>
  101. <GetAspNetMergePathDependsOn>
  102. GetFrameworkPaths;
  103. </GetAspNetMergePathDependsOn>
  104. </PropertyGroup>
  105. <Target
  106. Name="GetAspNetMergePath"
  107. DependsOnTargets="$(GetAspNetMergePathDependsOn)"
  108. Condition ="'$(GetAspNetMergePath)' != 'false'">
  109. <PropertyGroup>
  110. <AspnetMergeName>aspnet_merge.exe</AspnetMergeName>
  111. <AspnetMergePath Condition="Exists('$(TargetFrameworkSDKToolsDirectory)$(AspnetMergeName)')">$(TargetFrameworkSDKToolsDirectory)</AspnetMergePath>
  112. </PropertyGroup>
  113. <Error Condition="'$(AspnetMergePath)' == '' Or !Exists($(AspnetMergePath))"
  114. Text="Can't find the valid AspnetMergePath" />
  115. </Target>
  116. <!--********************************************************************-->
  117. <!-- Target GenerateAssemblyInfo -->
  118. <!--********************************************************************-->
  119. <!--
  120. ============================================================
  121. GenerateAssemblyInfo
  122. Generates an Assembly with the AssemblyAttributes contained in @(AssebmlyAttributes)
  123. The output is in property AssemblyInfoDll
  124. The assembly attributes can be defined as follows:
  125. <ItemGroup>
  126. <AssebmlyAttributes Include="AssemblyVersion">
  127. <value>3.0.0.0</value>
  128. </AssebmlyAttributes>
  129. <AssebmlyAttributes Include="AssemblyFileVersion">
  130. <value>3.0.0.0</value>
  131. </AssebmlyAttributes>
  132. <AssemblyAttributes Include="AssemblyTitle">
  133. <value>MyCompany MyWeb</value>
  134. </AssemblyAttributes>
  135. <AssemblyAttributes Include="AssemblyDescription">
  136. <value>Corporate Site</value>
  137. </AssemblyAttributes>
  138. <AssemblyAttributes Include="AssemblyCompany">
  139. <value>MyCompany</value>
  140. </AssemblyAttributes>
  141. <AssemblyAttributes Include="AssemblyCopyright">
  142. <value>Copyright © MyCompany 2005</value>
  143. </AssemblyAttributes>
  144. </ItemGroup>
  145. ============================================================
  146. -->
  147. <PropertyGroup>
  148. <GenerateAssemblyInfoFromAssemblyAttributesDependsOn>
  149. $(OnBeforeGenerateAssemblyInfoFromAssemblyAttributes);
  150. $(GenerateAssemblyInfoFromAssemblyAttributesDependsOn);
  151. GetFrameworkPaths;
  152. GetAspNetMergePath;
  153. </GenerateAssemblyInfoFromAssemblyAttributesDependsOn>
  154. </PropertyGroup>
  155. <Target Name="GenerateAssemblyInfoFromAssemblyAttributes"
  156. DependsOnTargets="$(GenerateAssemblyInfoFromAssemblyAttributesDependsOn)"
  157. Condition=" '@(AssemblyAttributes)' != '' ">
  158. <PropertyGroup >
  159. <_GenerateAssemblyInfoDll>False</_GenerateAssemblyInfoDll>
  160. <_GenerateAssemblyInfoDll Condition="'$(AssemblyInfoDll)' == '' Or !Exists($(AssemblyInfoDll))">True</_GenerateAssemblyInfoDll>
  161. </PropertyGroup>
  162. <PropertyGroup Condition="$(_GenerateAssemblyInfoDll)">
  163. <_AssemblyInfoSource Condition="'$(_AssemblyInfoSource)' == ''" >$(IntermediateOutputPath)AssemblyInfo\AssemblyInfo.cs</_AssemblyInfoSource>
  164. <_AssemblyInfoSourceDirectory>$([System.IO.Path]::GetDirectoryName($(_AssemblyInfoSource)))</_AssemblyInfoSourceDirectory>
  165. <AssemblyInfoDll>$([System.IO.Path]::GetDirectoryName($(_AssemblyInfoSource)))\AssemblyInfo.dll</AssemblyInfoDll>
  166. <_AssemblyInfoDllDirectory>$([System.IO.Path]::GetDirectoryName($(AssemblyInfoDll)))</_AssemblyInfoDllDirectory>
  167. </PropertyGroup>
  168. <GenerateAssemblyInfo Condition="$(_GenerateAssemblyInfoDll) And !Exists($(_AssemblyInfoSource))"
  169. AssemblyAttributes="@(AssemblyAttributes)"
  170. OutputDir="$([System.IO.Path]::GetDirectoryName($(_AssemblyInfoSource)))"
  171. />
  172. <MakeDir Condition="!Exists($(_AssemblyInfoDllDirectory))"
  173. Directories="$(_AssemblyInfoDllDirectory)" ContinueOnError="true" />
  174. <Csc Condition="$(_GenerateAssemblyInfoDll)"
  175. TargetType="library"
  176. Sources="$(_AssemblyInfoSource)"
  177. OutputAssembly="$(AssemblyInfoDll)"
  178. />
  179. <ItemGroup Condition="$(_GenerateAssemblyInfoDll) And Exists($(AssemblyInfoDll))">
  180. <FileWrites Include="$(_AssemblyInfoSource)" />
  181. <FileWrites Include="$(AssemblyInfoDll)" />
  182. </ItemGroup>
  183. </Target>
  184. <PropertyGroup>
  185. <GenerateAssemblyInfoFromExistingAssembleInfoDependsOn>
  186. $(OnBeforeGenerateAssemblyInfoFromExistingAssembleInfo);
  187. $(GenerateAssemblyInfoFromExistingAssembleInfoDependsOn);
  188. GetFrameworkPaths;
  189. GetAspNetMergePath;
  190. GenerateAssemblyInfoFromAssemblyAttributes;
  191. </GenerateAssemblyInfoFromExistingAssembleInfoDependsOn>
  192. </PropertyGroup>
  193. <Target Name="GenerateAssemblyInfoFromExistingAssembleInfo"
  194. DependsOnTargets="$(GenerateAssemblyInfoFromExistingAssembleInfoDependsOn)"
  195. Condition=" '@(AssemblyAttributes)' == '' ">
  196. <FilterByItems Condition="'$(_AssemblyInfoSource)'==''"
  197. PipelineItems="@(Compile)"
  198. SourceMetadataName="Filename"
  199. FilterMetadataName="Filename"
  200. Filter="AssemblyInfo">
  201. <Output TaskParameter="InFilter" ItemName="_AspNetCompile_AssemblyInfo"/>
  202. </FilterByItems>
  203. <ItemGroup Condition="'$(_AssemblyInfoSource)'!=''">
  204. <_AspNetCompile_AssemblyInfo Include="$(_AssemblyInfoSource)" />
  205. </ItemGroup>
  206. <PropertyGroup Condition="'$(AssemblyInfoDll)' == ''">
  207. <_AssemblyInfoDllDirectory>$(IntermediateOutputPath)AssemblyInfo</_AssemblyInfoDllDirectory>
  208. <AssemblyInfoDll>$(_AssemblyInfoDllDirectory)\AssemblyInfo.dll</AssemblyInfoDll>
  209. </PropertyGroup>
  210. <MakeDir Condition="!Exists($(_AssemblyInfoDllDirectory))"
  211. Directories="$(_AssemblyInfoDllDirectory)" ContinueOnError="true" />
  212. <PropertyGroup >
  213. <_GenerateAssemblyInfoDll>False</_GenerateAssemblyInfoDll>
  214. <_GenerateAssemblyInfoDll Condition="'$(AssemblyInfoDll)' == '' Or !Exists($(AssemblyInfoDll))">True</_GenerateAssemblyInfoDll>
  215. </PropertyGroup>
  216. <CheckItemsCount Items="@(_AspNetCompile_AssemblyInfo)" >
  217. <Output TaskParameter="Count" PropertyName="_AspNetCompile_AssemblyInfo_Count" />
  218. </CheckItemsCount>
  219. <!--Found more than one AssemblyInfo.cs or AssemblyInfo.vb
  220. To avoid this error either specify
  221. /p:_AssemblyInfoSource=..\..\AssemblyInfo.cs
  222. or
  223. /p:AssemblyInfoDll=$(TargetPath)
  224. or
  225. supply @(AssemblyAttributes) as following
  226. <ItemGroup>
  227. <AssebmlyAttributes Include="AssemblyVersion">
  228. <value>3.0.0.0</value>
  229. </AssebmlyAttributes>
  230. <AssebmlyAttributes Include="AssemblyFileVersion">
  231. <value>3.0.0.0</value>
  232. </AssebmlyAttributes>
  233. <AssemblyAttributes Include="AssemblyTitle">
  234. <value>MyCompany MyWeb</value>
  235. </AssemblyAttributes>
  236. <AssemblyAttributes Include="AssemblyDescription">
  237. <value>Corporate Site</value>
  238. </AssemblyAttributes>
  239. <AssemblyAttributes Include="AssemblyCompany">
  240. <value>MyCompany</value>
  241. </AssemblyAttributes>
  242. <AssemblyAttributes Include="AssemblyCopyright">
  243. <value>Copyright © MyCompany 2005</value>
  244. </AssemblyAttributes>
  245. </ItemGroup>-->
  246. <GetPublishingLocalizedString
  247. Condition="$(_GenerateAssemblyInfoDll) AND '$(_AspNetCompile_AssemblyInfo_Count)' != '1'"
  248. ID="PublishLocalizedString_ErrorInvalidMSBuildItemCollectionCount"
  249. ArgumentCount="3"
  250. Arguments="_AspNetCompile_AssemblyInfo_Count;$(_AspNetCompile_AssemblyInfo_Count);1"
  251. LogType="Error" />
  252. <Error Text ="Target GenerateAssemblyInfoFromExistingAssembleInfo Failed"
  253. Condition="$(_GenerateAssemblyInfoDll) And '$(_AspNetCompile_AssemblyInfo_Count)' != '1'" />
  254. <FilterByItems
  255. PipelineItems="@(_AspNetCompile_AssemblyInfo)"
  256. SourceMetadataName="Extension"
  257. FilterMetadataName="Extension"
  258. Filter="AssemblyInfo.cs">
  259. <Output TaskParameter="InFilter" ItemName="_AspNetCompile_AssemblyInfo_CS"/>
  260. </FilterByItems>
  261. <Csc Condition="$(_GenerateAssemblyInfoDll) And '@(_AspNetCompile_AssemblyInfo_CS)' != ''"
  262. TargetType="library"
  263. Sources="@(_AspNetCompile_AssemblyInfo_CS)"
  264. OutputAssembly="$(AssemblyInfoDll)"
  265. />
  266. <FilterByItems
  267. PipelineItems="@(_AspNetCompile_AssemblyInfo)"
  268. SourceMetadataName="Extension"
  269. FilterMetadataName="Extension"
  270. Filter="AssemblyInfo.vb">
  271. <Output TaskParameter="InFilter" ItemName="_AspNetCompile_AssemblyInfo_VB"/>
  272. </FilterByItems>
  273. <Vbc Condition="$(_GenerateAssemblyInfoDll) And '@(_AspNetCompile_AssemblyInfo_VB)' != ''"
  274. TargetType="library"
  275. Sources="@(_AspNetCompile_AssemblyInfo_VB)"
  276. OutputAssembly="$(AssemblyInfoDll)"
  277. />
  278. <ItemGroup Condition="$(_GenerateAssemblyInfoDll) And Exists($(AssemblyInfoDll))">
  279. <FileWrites Include="$(AssemblyInfoDll)" />
  280. </ItemGroup>
  281. </Target>
  282. <PropertyGroup>
  283. <GenerateAssemblyInfoDependsOn>
  284. $(OnBeforeGenerateAssemblyInfo);
  285. $(GenerateAssemblyInfoDependsOn);
  286. GetFrameworkPaths;
  287. GetAspNetMergePath;
  288. GenerateAssemblyInfoFromAssemblyAttributes;
  289. GenerateAssemblyInfoFromExistingAssembleInfo;
  290. </GenerateAssemblyInfoDependsOn>
  291. </PropertyGroup>
  292. <Target Name="GenerateAssemblyInfo"
  293. DependsOnTargets="$(GenerateAssemblyInfoDependsOn)"
  294. Condition=" '$(GenerateAssemblyInfo)' != 'false' ">
  295. </Target>
  296. <!--********************************************************************-->
  297. <!-- Target GetAspNetPreCompileSourceVirtualPath -->
  298. <!--********************************************************************-->
  299. <PropertyGroup>
  300. <GetAspNetPreCompileSourceVirtualPathDependsOn >
  301. $(OnBeforeGetAspNetPreCompileSourceVirtualPath);
  302. $(GetAspNetPreCompileSourceVirtualPathDependsOn);
  303. </GetAspNetPreCompileSourceVirtualPathDependsOn>
  304. </PropertyGroup>
  305. <Target Name="GetAspNetPreCompileSourceVirtualPath"
  306. Condition ="'$(GetAspNetPreCompileSourceVirtualPath)' != 'false' And '$(_AspNetCompilerVirtualPath)' == '' And '$(UseMetabasePath)' != 'true'"
  307. DependsOnTargets="$(GetAspNetPreCompileSourceVirtualPathDependsOn)">
  308. <ItemGroup>
  309. <__AspNetPreCompileSourceVirtualPathName Include ="DevelopmentServerVPath" />
  310. <__AspNetPreCompileSourceVirtualPathValue />
  311. </ItemGroup>
  312. <GetProjectProperties ProjectFileFullPath="$(WebPublishPipelineWAPProjectSettings)"
  313. ProjectExtensionsProperties="@(__AspNetPreCompileSourceVirtualPathName)">
  314. <Output TaskParameter="ResultProperties" ItemName="__AspNetPreCompileSourceVirtualPathValue" />
  315. <Output TaskParameter="UseIis" PropertyName="__AspNetPreCompileSourceUseIis" />
  316. <Output TaskParameter="IisUrl" PropertyName="__AspNetPreCompileSourceIisUrl" />
  317. </GetProjectProperties>
  318. <PropertyGroup>
  319. <_AspNetCompilerVirtualPath>%(__AspNetPreCompileSourceVirtualPathValue.Value)</_AspNetCompilerVirtualPath>
  320. <_AspNetCompilerVirtualPath Condition="'$(_AspNetCompilerVirtualPath)' == '' ">\</_AspNetCompilerVirtualPath>
  321. </PropertyGroup>
  322. </Target>
  323. <!--********************************************************************-->
  324. <!-- Target ConfigureForAspNetPreCompileMerge -->
  325. <!--********************************************************************-->
  326. <PropertyGroup>
  327. <ConfigureForAspNetPreCompileMergeDependsOn>
  328. $(OnBeforeConfigureForAspNetPreCompileMerge);
  329. $(ConfigureForAspNetPreCompileMergeDependsOn);
  330. GetFrameworkPaths;
  331. GetAspNetMergePath;
  332. GetAspNetPreCompileSourceVirtualPath;
  333. ResolveKeySource;
  334. </ConfigureForAspNetPreCompileMergeDependsOn>
  335. </PropertyGroup>
  336. <Target Name="ConfigureForAspNetPreCompileMerge" DependsOnTargets="$(ConfigureForAspNetPreCompileMergeDependsOn)">
  337. <PropertyGroup Condition="'$(_WDPFrameworkLowerThan4)' ==''">
  338. <_WDPFrameworkLowerThan4>False</_WDPFrameworkLowerThan4>
  339. <_WDPFrameworkLowerThan4 Condition="'$(TargetFrameworkVersion)' == 'v2.0' or '$(TargetFrameworkVersion)' == 'v3.0' or '$(TargetFrameworkVersion)' == 'v3.5'">True</_WDPFrameworkLowerThan4>
  340. </PropertyGroup>
  341. <PropertyGroup Condition="'$(AspnetCompilerPath)'==''">
  342. <AspnetCompilerPath >$(Framework40Dir)</AspnetCompilerPath>
  343. <AspnetCompilerPath Condition=" '$(_WDPFrameworkLowerThan4)' == 'True' ">$(Framework20Dir)</AspnetCompilerPath>
  344. </PropertyGroup>
  345. <Error Condition="'$(AspnetCompilerPath)' == '' Or !Exists($(AspnetCompilerPath))"
  346. Text="Can't find the valid AspnetCompilerPath" />
  347. <PropertyGroup>
  348. <_AspNetCompileMergeKeyFile Condition="'$(_AspNetCompileMergeKeyFile)' == ''">$(KeyOriginatorFile)</_AspNetCompileMergeKeyFile>
  349. </PropertyGroup>
  350. <PropertyGroup Condition="'$(UseMerge)' != true">
  351. <_AspNetCompileMergeKeyContainer Condition="'$(_AspNetCompileMergeKeyContainer)' == ''">$(KeyContainerName)</_AspNetCompileMergeKeyContainer>
  352. </PropertyGroup>
  353. </Target>
  354. <!--********************************************************************-->
  355. <!-- Target AspNetPreCompile -->
  356. <!--We can't use the in-place aspnet_compiler because it will output to the aspnet temp folder which is only suiteable to run on the current machine.-->
  357. <!--********************************************************************-->
  358. <PropertyGroup>
  359. <AspNetPreCompileDependsOn >
  360. $(OnBeforeAspNetPreCompile);
  361. $(AspNetPreCompileDependsOn);
  362. CopyAllFilesToSingleFolderForAspNetCompileMerge;
  363. GetReferenceAssemblyPaths;
  364. ResolveReferences;
  365. ResolveKeySource;
  366. ConfigureForAspNetPreCompileMerge;
  367. </AspNetPreCompileDependsOn>
  368. </PropertyGroup>
  369. <Target Name="AspNetPreCompile" DependsOnTargets="$(AspNetPreCompileDependsOn)" Condition="'$(AspNetPreCompile)' != 'false'">
  370. <PropertyGroup Condition="'$(UseMetabasePath)' == 'true'" >
  371. <_PreAspnetCompileMergeSingleTargetFolderFullPath></_PreAspnetCompileMergeSingleTargetFolderFullPath>
  372. <_AspNetCompilerVirtualPath></_AspNetCompilerVirtualPath>
  373. </PropertyGroup>
  374. <PropertyGroup Condition="'$(UseMetabasePath)' != 'true'" >
  375. <_PreAspnetCompileMergeSingleTargetFolderFullPath>$([System.IO.Path]::GetFullPath($(_PreAspnetCompileMergeSingleTargetFolder)))</_PreAspnetCompileMergeSingleTargetFolderFullPath>
  376. </PropertyGroup>
  377. <PropertyGroup>
  378. <_PostAspnetCompileMergeSingleTargetFolderFullPath>$([System.IO.Path]::GetFullPath($(_PostAspnetCompileMergeSingleTargetFolder)))</_PostAspnetCompileMergeSingleTargetFolderFullPath>
  379. </PropertyGroup>
  380. <AspNetCompiler
  381. PhysicalPath="$(_PreAspnetCompileMergeSingleTargetFolderFullPath)"
  382. TargetPath="$(_PostAspnetCompileMergeSingleTargetFolderFullPath)"
  383. VirtualPath="$(_AspNetCompilerVirtualPath)"
  384. Force="$(_AspNetCompilerForce)"
  385. Debug="$(DebugSymbols)"
  386. Updateable="$(EnableUpdateable)"
  387. KeyFile="$(_AspNetCompileMergeKeyFile)"
  388. KeyContainer="$(_AspNetCompileMergeKeyContainer)"
  389. DelaySign="$(DelaySign)"
  390. AllowPartiallyTrustedCallers="$(AllowPartiallyTrustedCallers)"
  391. FixedNames="$(_AspNetCompilerFixedNames)"
  392. Clean="$(Clean)"
  393. MetabasePath="$(_AspNetCompilerMetabasePath)"
  394. ToolPath="$(AspnetCompilerPath)"
  395. />
  396. <!--
  397. Removing APP_DATA is done here so that the output groups reflect the fact that App_data is
  398. not present
  399. -->
  400. <RemoveDir Condition="'$(DeleteAppDataFolder)' == 'true' And Exists('$(_PostAspnetCompileMergeSingleTargetFolderFullPath)\App_Data')"
  401. Directories="$(_PostAspnetCompileMergeSingleTargetFolderFullPath)\App_Data" />
  402. <CollectFilesinFolder Condition="'$(UseMerge)' != 'true'"
  403. RootPath="$(_PostAspnetCompileMergeSingleTargetFolderFullPath)" >
  404. <Output TaskParameter="Result" ItemName="_AspnetCompileMergePrecompiledOutputNoMetadata" />
  405. </CollectFilesinFolder>
  406. <ItemGroup Condition="'$(UseMerge)' != 'true'">
  407. <FileWrites Include="$(_PostAspnetCompileMergeSingleTargetFolderFullPath)\**"/>
  408. </ItemGroup>
  409. </Target>
  410. <!--********************************************************************-->
  411. <!-- Target AspNetMerge -->
  412. <!--********************************************************************-->
  413. <PropertyGroup>
  414. <AspNetMergeDependsOn >
  415. $(OnBeforeAspNetMerge);
  416. CopyAllFilesToSingleFolderForAspNetCompileMerge;
  417. $(AspNetMergeDependsOn);
  418. ConfigureForAspNetPreCompileMerge;
  419. AspNetPreCompile;
  420. GenerateAssemblyInfo;
  421. </AspNetMergeDependsOn>
  422. </PropertyGroup>
  423. <Target Name="AspNetMerge" DependsOnTargets="$(AspNetMergeDependsOn)" Condition="'$(AspNetMerge)' != 'false' And '$(UseMerge)' == 'true'">
  424. <AspNetMerge
  425. ExePath="$(AspnetMergePath)"
  426. ApplicationPath="$(_PostAspnetCompileMergeSingleTargetFolderFullPath)"
  427. KeyFile="$(_AspNetCompileMergeKeyFile)"
  428. DelaySign="$(DelaySign)"
  429. Prefix="$(AssemblyPrefixName)"
  430. SingleAssemblyName="$(SingleAssemblyName)"
  431. Debug="$(DebugSymbols)"
  432. Nologo="$(NoLogo)"
  433. ContentAssemblyName="$(ContentAssemblyName)"
  434. ErrorStack="$(ErrorStack)"
  435. RemoveCompiledFiles="$(DeleteAppCodeCompiledFiles)"
  436. CopyAttributes="$(CopyAssemblyAttributes)"
  437. AssemblyInfo="$(AssemblyInfoDll)"
  438. MergeXmlDocs="$(MergeXmlDocs)"
  439. ErrorLogFile="$(MergeErrorLogFile)"
  440. />
  441. <CollectFilesinFolder Condition="'$(UseMerge)' == 'true'"
  442. RootPath="$(_PostAspnetCompileMergeSingleTargetFolderFullPath)" >
  443. <Output TaskParameter="Result" ItemName="_AspnetCompileMergePrecompiledOutputNoMetadata" />
  444. </CollectFilesinFolder>
  445. <ItemGroup Condition="'$(UseMerge)' == 'true'">
  446. <FileWrites Include="$(_PostAspnetCompileMergeSingleTargetFolderFullPath)\**"/>
  447. </ItemGroup>
  448. </Target>
  449. <!--********************************************************************-->
  450. <!--Target ConfigureFoldersForAspNetCompileMerge -->
  451. <!--********************************************************************-->
  452. <PropertyGroup>
  453. <ConfigureFoldersForAspNetCompileMergeDependsOn>
  454. $(OnBeforeConfigureFoldersForAspNetCompileMerge);
  455. $(ConfigureFoldersForAspNetCompileMergeDependsOn);
  456. </ConfigureFoldersForAspNetCompileMergeDependsOn>
  457. </PropertyGroup>
  458. <Target Name="ConfigureFoldersForAspNetCompileMerge"
  459. Outputs="@(FilesForPackagingFromProject)"
  460. DependsOnTargets="$(ConfigureFoldersForAspNetCompileMergeDependsOn)">
  461. <!--This is a phase separation point-->
  462. <!--
  463. <CopyBeforeAspnetCompileMergeTargetPath Condition="'$(CopyBeforeAspnetCompileMergeTargetPath)' == ''">$(AspnetCompileMergeIntermediateOutputPath)\Source</CopyBeforeAspnetCompileMergeTargetPath>
  464. <AspnetCompileMerge_TempBuildDir Condition="'$(AspnetCompileMerge_TempBuildDir)' == ''" >$(AspnetCompileMergeIntermediateOutputPath)\TempBuildDir</AspnetCompileMerge_TempBuildDir>
  465. -->
  466. <PropertyGroup>
  467. <_PreAspnetCompileMergeSingleTargetFolder>$(CopyBeforeAspnetCompileMergeTargetPath)</_PreAspnetCompileMergeSingleTargetFolder>
  468. <_PostAspnetCompileMergeSingleTargetFolder>$(AspnetCompileMerge_TempBuildDir)</_PostAspnetCompileMergeSingleTargetFolder>
  469. </PropertyGroup>
  470. <CallTarget Targets="$(OnAfterConfigureFoldersForAspNetCompileMerge)" RunEachTargetSeparately="False" />
  471. </Target>
  472. <!--******************************************************************** -->
  473. <!-- CopyAllFilesToSingleFolderForAspNetCompileMerge Task -->
  474. <!-- This will materialize all the in-memory files list which is not marked -->
  475. <!-- as excluded from packaging into the AspNetCompileMerge temp folder. -->
  476. <!--ToDo: remove the condition on ContentPath AspNetCompileMerge (we are doing it now because IIS team is not support it yet-->
  477. <!-- ******************************************************************** -->
  478. <PropertyGroup>
  479. <CopyAllFilesToSingleFolderForAspNetCompileMergeDependsOn>
  480. $(OnBeforeCopyAllFilesToSingleFolderForAspNetCompileMerge);
  481. ConfigureFoldersForAspNetCompileMerge;
  482. $(CopyAllFilesToSingleFolderForAspNetCompileMergeDependsOn);
  483. </CopyAllFilesToSingleFolderForAspNetCompileMergeDependsOn>
  484. </PropertyGroup>
  485. <Target Name="CopyAllFilesToSingleFolderForAspNetCompileMerge"
  486. DependsOnTargets="$(CopyAllFilesToSingleFolderForAspNetCompileMergeDependsOn)"
  487. Condition="'$(UseMetabasePath)' != 'true'">
  488. <!-- In the case of the incremental Packaging/Publish, we need to find out the extra file and delete them-->
  489. <ItemGroup>
  490. <_AllExtraFilesUnder_PreAspnetCompileMergeSingleTargetFolder Include="$(_PreAspnetCompileMergeSingleTargetFolder)\**" />
  491. <_AllExtraFilesUnder_PreAspnetCompileMergeSingleTargetFolder
  492. Remove="@(FilesForPackagingFromProject->'$(_PreAspnetCompileMergeSingleTargetFolder)\%(DestinationRelativePath)')" />
  493. </ItemGroup>
  494. <!--Remove all extra files in the temp folder that's not in the @(FilesForPackagingFromProject-->
  495. <Delete Files="@(_AllExtraFilesUnder_PreAspnetCompileMergeSingleTargetFolder)" />
  496. <!-- Make sure the folder exist -->
  497. <MakeDir Directories="$(_PreAspnetCompileMergeSingleTargetFolder)" Condition="!Exists('$(_PreAspnetCompileMergeSingleTargetFolder)')"/>
  498. <!--Get Localized string before displaying message-->
  499. <GetPublishingLocalizedString
  500. Importance="High"
  501. ID="PublishLocalizedString_WebPublishPipelineMaterializeAllFilesToTempDir"
  502. ArgumentCount="1"
  503. Arguments="$(_PreAspnetCompileMergeSingleTargetFolder)"
  504. LogType="Message" />
  505. <!--Force Copy Of all file to the $(_PreAspnetCompileMergeSingleTargetFolder) if needed-->
  506. <CopyPipelineFiles PipelineItems="@(FilesForPackagingFromProject)"
  507. SourceDirectory="$(WebPublishPipelineProjectDirectory)"
  508. TargetDirectory="$(_PreAspnetCompileMergeSingleTargetFolder)"
  509. SkipMetadataExcludeTrueItems="True"
  510. UpdateItemSpec="True"
  511. DeleteItemsMarkAsExcludeTrue ="True">
  512. <Output TaskParameter="ResultPipelineItems" ItemName="_Files_PreAspnetCompileMergeSingleTargetFolder"/>
  513. </CopyPipelineFiles>
  514. <!--Workaround the MSBuild 2.0 limitation-->
  515. <ItemGroup>
  516. <FilesForPackagingFromProject Remove="@(FilesForPackagingFromProject)" />
  517. <FilesForPackagingFromProject Include="@(_Files_PreAspnetCompileMergeSingleTargetFolder)" />
  518. </ItemGroup>
  519. <WriteLinesToFile Condition="$(EnablePackageProcessLoggingAndAssert)"
  520. Encoding="utf-8"
  521. File="$(IntermediateOutputPath)\FilesForPackagingFromProjectInPreAspNetComopileMergeCopied.txt"
  522. Lines="@(FilesForPackagingFromProject->'
  523. Files:%(Identity)
  524. FromTarget:%(FromTarget)
  525. DestinationRelativePath:%(DestinationRelativePath)')"
  526. Overwrite="True" />
  527. <!--Remove all Empty folder that's left. Since it is not critical, we only log warning if we failed to delete empty folder.-->
  528. <RemoveEmptyDirectories Directories="$(_PreAspnetCompileMergeSingleTargetFolder)" LogErrorAsWarning="True" />
  529. <MakeDir Directories="$(_PreAspnetCompileMergeSingleTargetFolder)" Condition="!Exists('$(_PreAspnetCompileMergeSingleTargetFolder)')"/>
  530. <CallTarget Targets="$(OnAfterCopyAllFilesToSingleFolderForAspNetCompileMerge)" RunEachTargetSeparately="False" />
  531. </Target>
  532. <!--********************************************************************-->
  533. <!--Target PostAspNetCompileMergeCollectFiles -->
  534. <!--********************************************************************-->
  535. <PropertyGroup>
  536. <PostAspNetCompileMergeCollectFilesDependsOn>
  537. $(OnBeforePostAspNetCompileMergeCollectFiles);
  538. $(PostAspNetCompileMergeCollectFilesDependsOn);
  539. AspNetMerge;
  540. </PostAspNetCompileMergeCollectFilesDependsOn>
  541. </PropertyGroup>
  542. <Target Name="PostAspNetCompileMergeCollectFiles"
  543. Outputs="@(FilesForPackagingFromProject)"
  544. DependsOnTargets="$(PostAspNetCompileMergeCollectFilesDependsOn)">
  545. <!--need to consolate the @(FilesForPackagingFromProject) and @(_AspnetCompileMergePrecompiledOutput)-->
  546. <ItemGroup>
  547. <_AspnetCompileMergePrecompiledOutput Include="@(_AspnetCompileMergePrecompiledOutputNoMetadata->'$(_PostAspnetCompileMergeSingleTargetFolder)\%(Identity)')">
  548. <DestinationRelativePath>%(_AspnetCompileMergePrecompiledOutputNoMetadata.Identity)</DestinationRelativePath>
  549. </_AspnetCompileMergePrecompiledOutput>
  550. </ItemGroup>
  551. <!--This exclude if the filter item's DestinationRelativePath is specified.
  552. This is useful for case like Reference Dll and pdb where the source is not under the current project.-->
  553. <FilterByItems PipelineItems="@(FilesForPackagingFromProject)"
  554. SourceMetadataName="DestinationRelativePath"
  555. FilterRootFolder="$(_PostAspnetCompileMergeSingleTargetFolderFullPath)"
  556. FilterBaseOnRelativePath="True"
  557. FilterMetadataName="DestinationRelativePath"
  558. Filter="@(_AspnetCompileMergePrecompiledOutput)">
  559. <Output TaskParameter="InFilter" ItemName="_FilesForPackagingFromProject_in_AspnetCompileMergePrecompiledOutput"/>
  560. </FilterByItems>
  561. <!--Keep the Item meta from the original @(FilesForPackagingFromProject)-->
  562. <ItemGroup>
  563. <_AspnetCompileMergePrecompiledOutput Remove="@(_FilesForPackagingFromProject_in_AspnetCompileMergePrecompiledOutput->'%(FilterItemSpec)')" />
  564. <_AspnetCompileMergePrecompiledOutput Include="@(_FilesForPackagingFromProject_in_AspnetCompileMergePrecompiledOutput->'%(FilterItemSpec)')" />
  565. </ItemGroup>
  566. <!--Workaround the MSBuild 2.0 limitation-->
  567. <ItemGroup>
  568. <FilesForPackagingFromProject Remove="@(FilesForPackagingFromProject)" />
  569. <FilesForPackagingFromProject Include="@(_AspnetCompileMergePrecompiledOutput)" />
  570. </ItemGroup>
  571. <WriteLinesToFile Condition="$(EnablePackageProcessLoggingAndAssert)"
  572. Encoding="utf-8"
  573. File="$(IntermediateOutputPath)\FilesForPackagingFromPostAspNetCompileMergeCollectFiles.txt"
  574. Lines="@(FilesForPackagingFromProject->'
  575. Files:%(Identity)
  576. FromTarget:%(FromTarget)
  577. DestinationRelativePath:%(DestinationRelativePath)')"
  578. Overwrite="True" />
  579. <CallTarget Targets="$(OnAfterPostAspNetCompileMergeCollectFiles)" RunEachTargetSeparately="False" />
  580. </Target>
  581. <!--********************************************************************-->
  582. <!--Target CleanPostAspNetCompileMergeFolder -->
  583. <!--********************************************************************-->
  584. <PropertyGroup>
  585. <CleanPostAspNetCompileMergeFolderDependsOn>
  586. $(OnBeforeCleanPostAspNetCompileMergeFolder);
  587. $(CleanPostAspNetCompileMergeFolderDependsOn);
  588. ConfigureFoldersForAspNetCompileMerge;
  589. </CleanPostAspNetCompileMergeFolderDependsOn>
  590. </PropertyGroup>
  591. <Target Name="CleanPostAspNetCompileMergeFolder"
  592. Outputs="@(FilesForPackagingFromProject)"
  593. DependsOnTargets="$(CleanPostAspNetCompileMergeFolderDependsOn)">
  594. <RemoveDir Condition="'$(_PostAspnetCompileMergeSingleTargetFolder)' != '' And Exists($(_PostAspnetCompileMergeSingleTargetFolder))"
  595. Directories="$(_PostAspnetCompileMergeSingleTargetFolder)" />
  596. <CallTarget Targets="$(OnAfterCleanPostAspNetCompileMergeFolder)" RunEachTargetSeparately="False" />
  597. </Target>
  598. <!--********************************************************************-->
  599. <!--Target PipelineAspNetCompileMergePhase -->
  600. <!--********************************************************************-->
  601. <PropertyGroup>
  602. <PipelineAspNetCompileMergePhaseDependsOn>
  603. $(OnBeforePipelineAspNetCompileMergePhase);
  604. $(PipelineAspNetCompileMergePhaseDependsOn);
  605. CleanPostAspNetCompileMergeFolder;
  606. CopyAllFilesToSingleFolderForAspNetCompileMerge;
  607. AspNetPreCompile;
  608. AspNetMerge;
  609. PostAspNetCompileMergeCollectFiles;
  610. </PipelineAspNetCompileMergePhaseDependsOn>
  611. <PipelineAspNetCompileMergePhaseAfterTargets Condition="'$(PipelineAspNetCompileMergePhaseAfterTargets)' == '' ">
  612. PipelineTransformPhase;
  613. </PipelineAspNetCompileMergePhaseAfterTargets>
  614. </PropertyGroup>
  615. <Target Name="PipelineAspNetCompileMergePhase"
  616. Outputs="@(FilesForPackagingFromProject)"
  617. DependsOnTargets="$(PipelineAspNetCompileMergePhaseDependsOn)"
  618. AfterTargets="$(PipelineAspNetCompileMergePhaseAfterTargets)">
  619. <!--This is a phase separation point-->
  620. <!--Get Localized string before displaying message-->
  621. <GetPublishingLocalizedString
  622. ID="PublishLocalizedString_WebPublishPipelinePhase"
  623. ArgumentCount="1"
  624. Arguments="AspnetCompileMerge"
  625. LogType="Message" />
  626. <!--<Message Text="Pipeline AspNetCompileMerge Phase" />-->
  627. <CallTarget Targets="$(OnAfterPipelineAspNetCompileMergePhase)" RunEachTargetSeparately="False" />
  628. </Target>
  629. <!--ImportAfter Extension-->
  630. <PropertyGroup>
  631. <ImportByWildcardAfterMicrosoftWebPublishingTransformTargets Condition="'$(ImportByWildcardAfterMicrosoftWebPublishingTransformTargets)'==''">true</ImportByWildcardAfterMicrosoftWebPublishingTransformTargets>
  632. </PropertyGroup>
  633. <Import Project="$(MSBuildThisFileDirectory)\$(MSBuildThisFileName)\ImportAfter\*" Condition="'$(ImportByWildcardAfterMicrosoftWebPublishingTransformTargets)' == 'true' and exists('$(MSBuildThisFileDirectory)\$(MSBuildThisFileName)\ImportAfter')"/>
  634. </Project>