Unpack dotnet sdk zipfile and add documentation file to nupkg
[platform/core/dotnet/build-tools.git] / dotnet / sdk / 2.0.0-preview1-005700 / Sdks / Microsoft.NET.Sdk / build / Microsoft.NET.Publish.targets
1 <!--\r
2 ***********************************************************************************************\r
3 Microsoft.NET.Publish.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 projects from the command-line or the IDE.\r
8 \r
9 Copyright (c) .NET Foundation. All rights reserved. \r
10 ***********************************************************************************************\r
11 -->\r
12 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
13 \r
14   <!--\r
15     ============================================================\r
16                                         Publish\r
17  \r
18     The main publish entry point.\r
19     ============================================================\r
20     -->\r
21   <PropertyGroup>\r
22     <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>\r
23     \r
24     <DefaultCopyToPublishDirectoryMetadata Condition="'$(DefaultCopyToPublishDirectoryMetadata)' == ''">true</DefaultCopyToPublishDirectoryMetadata>\r
25     <_GetChildProjectCopyToPublishDirectoryItems Condition="'$(_GetChildProjectCopyToPublishDirectoryItems)' == ''">true</_GetChildProjectCopyToPublishDirectoryItems>\r
26 \r
27     <!-- publishing self-contained apps should publish the native host as $(AssemblyName).exe -->\r
28     <DeployAppHost Condition=" '$(DeployAppHost)' == '' and '$(OutputType)' == 'Exe' and '$(RuntimeIdentifier)' != ''">true</DeployAppHost>\r
29   </PropertyGroup>\r
30 \r
31   <ItemDefinitionGroup>\r
32     <ResolvedFileToPublish>\r
33       <CopyToPublishDirectory>Always</CopyToPublishDirectory>\r
34     </ResolvedFileToPublish>\r
35   </ItemDefinitionGroup>\r
36 \r
37   <Target Name="Publish"\r
38           DependsOnTargets="Build;\r
39                             PrepareForPublish;\r
40                             ComputeAndCopyFilesToPublishDirectory;\r
41                             GeneratePublishDependencyFile;\r
42                             GeneratePublishRuntimeConfigurationFile" />\r
43 \r
44   <!--\r
45     ============================================================\r
46                                         PrepareForPublish\r
47 \r
48     Prepare the prerequisites for publishing.\r
49     ============================================================\r
50     -->\r
51   <Target Name="PrepareForPublish">\r
52 \r
53     <PropertyGroup>\r
54       <!-- Ensure any PublishDir has a trailing slash, so it can be concatenated -->\r
55       <PublishDir Condition="!HasTrailingSlash('$(PublishDir)')">$(PublishDir)\</PublishDir>\r
56     </PropertyGroup>\r
57 \r
58     <MakeDir Directories="$(PublishDir)" />\r
59 \r
60   </Target>\r
61 \r
62   <!--\r
63     ============================================================\r
64                                         ComputeAndCopyFilesToPublishDirectory\r
65 \r
66     Computes the list of all files to copy to the publish directory and then publishes them.\r
67     ============================================================\r
68     -->\r
69   <Target Name="ComputeAndCopyFilesToPublishDirectory"\r
70           DependsOnTargets="ComputeFilesToPublish;\r
71                             CopyFilesToPublishDirectory" />\r
72 \r
73   <!--\r
74     ============================================================\r
75                                         CopyFilesToPublishDirectory\r
76 \r
77     Copy all build outputs, satellites and other necessary files to the publish directory.\r
78     ============================================================\r
79     -->\r
80   <Target Name="CopyFilesToPublishDirectory"\r
81           DependsOnTargets="_CopyResolvedFilesToPublishPreserveNewest;\r
82                             _CopyResolvedFilesToPublishAlways" />\r
83 \r
84   <!--\r
85     ============================================================\r
86                                         _CopyResolvedFilesToPublishPreserveNewest\r
87 \r
88     Copy _ResolvedFileToPublishPreserveNewest items to the publish directory.\r
89     ============================================================\r
90     -->\r
91   <Target Name="_CopyResolvedFilesToPublishPreserveNewest"\r
92           DependsOnTargets="_ComputeResolvedFilesToPublishTypes"\r
93           Inputs="@(_ResolvedFileToPublishPreserveNewest)"\r
94           Outputs="@(_ResolvedFileToPublishPreserveNewest->'$(PublishDir)%(RelativePath)')">\r
95 \r
96     <!--\r
97         Not using SkipUnchangedFiles="true" because the application may want to change\r
98         one of these files and not have an incremental build replace it.\r
99         -->\r
100     <Copy SourceFiles = "@(_ResolvedFileToPublishPreserveNewest)"\r
101           DestinationFiles="@(_ResolvedFileToPublishPreserveNewest->'$(PublishDir)%(RelativePath)')"\r
102           OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)"\r
103           Retries="$(CopyRetryCount)"\r
104           RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)"\r
105           UseHardlinksIfPossible="$(CreateHardLinksForPublishFilesIfPossible)"\r
106           UseSymboliclinksIfPossible="$(CreateSymbolicLinksForPublishFilesIfPossible)">\r
107 \r
108       <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>\r
109 \r
110     </Copy>\r
111 \r
112   </Target>\r
113 \r
114   <!--\r
115     ============================================================\r
116                                         _CopyResolvedFilesToPublishAlways\r
117 \r
118     Copy _ResolvedFileToPublishAlways items to the publish directory.\r
119     ============================================================\r
120     -->\r
121   <Target Name="_CopyResolvedFilesToPublishAlways"\r
122           DependsOnTargets="_ComputeResolvedFilesToPublishTypes">\r
123 \r
124     <!--\r
125         Not using SkipUnchangedFiles="true" because the application may want to change\r
126         one of these files and not have an incremental build replace it.\r
127         -->\r
128     <Copy SourceFiles = "@(_ResolvedFileToPublishAlways)"\r
129           DestinationFiles="@(_ResolvedFileToPublishAlways->'$(PublishDir)%(RelativePath)')"\r
130           OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)"\r
131           Retries="$(CopyRetryCount)"\r
132           RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)"\r
133           UseHardlinksIfPossible="$(CreateHardLinksForPublishFilesIfPossible)"\r
134           UseSymboliclinksIfPossible="$(CreateSymbolicLinksForPublishFilesIfPossible)">\r
135 \r
136       <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>\r
137 \r
138     </Copy>\r
139 \r
140   </Target>\r
141 \r
142   <!--\r
143     ============================================================\r
144                                         _ComputeResolvedFilesToPublishTypes\r
145 \r
146     Splits ResolvedFileToPublish items into 'PreserveNewest' and 'Always' buckets.\r
147     ============================================================\r
148     -->\r
149   <Target Name="_ComputeResolvedFilesToPublishTypes">\r
150     <ItemGroup>\r
151       <_ResolvedFileToPublishPreserveNewest Include="@(ResolvedFileToPublish)"\r
152                                              Condition="'%(ResolvedFileToPublish.CopyToPublishDirectory)'=='PreserveNewest'" />\r
153 \r
154       <_ResolvedFileToPublishAlways Include="@(ResolvedFileToPublish)"\r
155                                      Condition="'%(ResolvedFileToPublish.CopyToPublishDirectory)'=='Always'" />\r
156     </ItemGroup>\r
157   </Target>\r
158 \r
159 \r
160   <!--\r
161     ============================================================\r
162                                         ComputeFilesToPublish\r
163 \r
164     Gathers all the files that need to be copied to the publish directory.\r
165     ============================================================\r
166     -->\r
167   <Target Name="ComputeFilesToPublish"\r
168           DependsOnTargets="_ComputeNetPublishAssets;\r
169                             _ComputeCopyToPublishDirectoryItems">\r
170 \r
171     <PropertyGroup>\r
172       <CopyBuildOutputToPublishDirectory Condition="'$(CopyBuildOutputToPublishDirectory)'==''">true</CopyBuildOutputToPublishDirectory>\r
173       <CopyOutputSymbolsToPublishDirectory Condition="'$(CopyOutputSymbolsToPublishDirectory)'==''">true</CopyOutputSymbolsToPublishDirectory>\r
174     </PropertyGroup>\r
175 \r
176     <ItemGroup>\r
177       <!-- Copy the build product (.dll or .exe). -->\r
178       <ResolvedFileToPublish Include="@(IntermediateAssembly)"\r
179                               Condition="'$(CopyBuildOutputToPublishDirectory)' == 'true'">\r
180         <RelativePath>@(IntermediateAssembly->'%(Filename)%(Extension)')</RelativePath>\r
181       </ResolvedFileToPublish>\r
182       \r
183       <!-- Copy the app.config (if any) -->\r
184       <ResolvedFileToPublish Include="@(AppConfigWithTargetPath)"\r
185                               Condition="'$(CopyBuildOutputToPublishDirectory)' == 'true'">\r
186         <RelativePath>@(AppConfigWithTargetPath->'%(TargetPath)')</RelativePath>\r
187       </ResolvedFileToPublish>\r
188 \r
189       <!-- Copy the debug information file (.pdb), if any -->\r
190       <ResolvedFileToPublish Include="@(_DebugSymbolsIntermediatePath)"\r
191                               Condition="'$(_DebugSymbolsProduced)'=='true' and '$(CopyOutputSymbolsToPublishDirectory)'=='true'">\r
192         <RelativePath>@(_DebugSymbolsIntermediatePath->'%(Filename)%(Extension)')</RelativePath>\r
193       </ResolvedFileToPublish>\r
194 \r
195       <!-- Copy satellite assemblies. -->\r
196       <ResolvedFileToPublish Include="@(IntermediateSatelliteAssembliesWithTargetPath)">\r
197         <RelativePath>%(IntermediateSatelliteAssembliesWithTargetPath.Culture)\%(Filename)%(Extension)</RelativePath>\r
198       </ResolvedFileToPublish>\r
199 \r
200       <!-- Copy all the assemblies -->\r
201       <ResolvedFileToPublish Include="@(ResolvedAssembliesToPublish)">\r
202         <RelativePath>%(ResolvedAssembliesToPublish.DestinationSubPath)</RelativePath>\r
203       </ResolvedFileToPublish>\r
204     </ItemGroup>\r
205 \r
206   </Target>\r
207 \r
208   <Target Name="_ComputeNetPublishAssets"\r
209           DependsOnTargets="RunResolvePublishAssemblies">\r
210     <!-- TODO get the content files -->\r
211     <!-- TODO perform any preprocess transforms on the files -->\r
212 \r
213     <ItemGroup>\r
214       <ResolvedAssembliesToPublish Include="@(ReferenceCopyLocalPaths)" Exclude="@(ResolvedAssembliesToPublish)">\r
215         <DestinationSubPath>%(ReferenceCopyLocalPaths.DestinationSubDirectory)%(Filename)%(Extension)</DestinationSubPath>\r
216       </ResolvedAssembliesToPublish>\r
217     </ItemGroup>\r
218   </Target>\r
219 \r
220   <!--\r
221     ============================================================\r
222                      RunResolvePublishAssemblies\r
223 \r
224     Gets the assemblies to be copied to the publish directory\r
225     ============================================================\r
226     -->\r
227   <UsingTask TaskName="ResolvePublishAssemblies" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />\r
228   <Target Name="RunResolvePublishAssemblies"\r
229           DependsOnTargets="ComputePrivateAssetsPackageReferences;\r
230                             _DefaultMicrosoftNETPlatformLibrary">\r
231     <ItemGroup>\r
232       <FilterProjectFileList Include="$(FilterProjectFiles.Split('%3B'))"/>\r
233     </ItemGroup>\r
234     <ResolvePublishAssemblies ProjectPath="$(MSBuildProjectFullPath)"\r
235                               AssetsFilePath="$(ProjectAssetsFile)"\r
236                               TargetFramework="$(TargetFrameworkMoniker)"\r
237                               RuntimeIdentifier="$(RuntimeIdentifier)"\r
238                               PlatformLibraryName="$(MicrosoftNETPlatformLibrary)"\r
239                               PrivateAssetsPackageReferences="@(PrivateAssetsPackageReference)"\r
240                               FilterProjectFiles="@(FilterProjectFileList)"\r
241                               PreserveCacheLayout="$(PreserveCacheLayout)">\r
242 \r
243       <Output TaskParameter="AssembliesToPublish" ItemName="ResolvedAssembliesToPublish" />\r
244       <Output TaskParameter="PackagesResolved" ItemName="PackagesThatWereResolved" />\r
245     </ResolvePublishAssemblies>\r
246     \r
247     <ItemGroup>\r
248       <ResolvedPackagesPublished Include="@(PackagesThatWereResolved)"\r
249                                     Condition="$(DoNotTrackPackageAsResolved) !='true'"/>\r
250     </ItemGroup>\r
251     \r
252   </Target>\r
253   \r
254   <!--\r
255     ============================================================\r
256                                         _ComputeCopyToPublishDirectoryItems\r
257     ============================================================\r
258     -->\r
259   <Target Name="_ComputeCopyToPublishDirectoryItems"\r
260           DependsOnTargets="GetCopyToPublishDirectoryItems">\r
261 \r
262     <ItemGroup>\r
263       <ResolvedFileToPublish Include="@(_SourceItemsToCopyToPublishDirectoryAlways)">\r
264         <RelativePath>%(_SourceItemsToCopyToPublishDirectoryAlways.TargetPath)</RelativePath>\r
265         <CopyToPublishDirectory>Always</CopyToPublishDirectory>\r
266       </ResolvedFileToPublish>\r
267 \r
268       <ResolvedFileToPublish Include="@(_SourceItemsToCopyToPublishDirectory)">\r
269         <RelativePath>%(_SourceItemsToCopyToPublishDirectory.TargetPath)</RelativePath>\r
270         <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>\r
271       </ResolvedFileToPublish>\r
272     </ItemGroup>\r
273 \r
274   </Target>\r
275 \r
276   <!--\r
277     ============================================================\r
278                                         GetCopyToPublishDirectoryItems\r
279 \r
280     Get all project items that may need to be transferred to the publish directory.\r
281     This includes baggage items from transitively referenced projects. It would appear\r
282     that this target computes full transitive closure of content items for all referenced\r
283     projects; however that is not the case. It only collects the content items from its\r
284     immediate children and not children of children. \r
285     \r
286     See comment on GetCopyToOutputDirectoryItems, from which this logic was taken.\r
287     ============================================================\r
288     -->\r
289   <Target Name="GetCopyToPublishDirectoryItems"\r
290           Returns="@(AllPublishItemsFullPathWithTargetPath)"\r
291           KeepDuplicateOutputs=" '$(MSBuildDisableGetCopyToPublishDirectoryItemsOptimization)' == '' "\r
292           DependsOnTargets="AssignTargetPaths;\r
293                             DefaultCopyToPublishDirectoryMetadata;\r
294                             _SplitProjectReferencesByFileExistence;\r
295                             _GetProjectReferenceTargetFrameworkProperties">\r
296 \r
297 \r
298     <!-- In the general case, clients need very little of the metadata which is generated by invoking this target on this project and its children.  For those\r
299          cases, we can immediately discard the unwanted metadata, reducing memory usage, particularly in very large and interconnected systems of projects.\r
300          However, if some client does require the original functionality, it is sufficient to set MSBuildDisableGetCopyToPublishDirectoryItemsOptimization to\r
301          a non-empty value and the original behavior will be restored. -->\r
302     <PropertyGroup Condition=" '$(MSBuildDisableGetCopyToPublishDirectoryItemsOptimization)' == '' ">\r
303       <_GCTPDIKeepDuplicates>false</_GCTPDIKeepDuplicates>\r
304       <_GCTPDIKeepMetadata>CopyToPublishDirectory;TargetPath</_GCTPDIKeepMetadata>\r
305     </PropertyGroup>\r
306 \r
307     <!-- Get items from child projects first. -->\r
308     <MSBuild Projects="@(_MSBuildProjectReferenceExistent)"\r
309              Targets="GetCopyToPublishDirectoryItems"\r
310              BuildInParallel="$(BuildInParallel)"\r
311              Properties="%(_MSBuildProjectReferenceExistent.SetConfiguration); %(_MSBuildProjectReferenceExistent.SetPlatform); %(_MSBuildProjectReferenceExistent.SetTargetFramework)"\r
312              Condition="'@(_MSBuildProjectReferenceExistent)' != '' and '$(_GetChildProjectCopyToPublishDirectoryItems)' == 'true' and '%(_MSBuildProjectReferenceExistent.Private)' != 'false'"\r
313              ContinueOnError="$(ContinueOnError)"\r
314              RemoveProperties="%(_MSBuildProjectReferenceExistent.GlobalPropertiesToRemove)">\r
315 \r
316       <Output TaskParameter="TargetOutputs" ItemName="_AllChildProjectPublishItemsWithTargetPath"/>\r
317 \r
318     </MSBuild>\r
319 \r
320     <!-- Target outputs must be full paths because they will be consumed by a different project. -->\r
321     <ItemGroup>\r
322       <_SourceItemsToCopyToPublishDirectoryAlways KeepDuplicates=" '$(_GCTPDIKeepDuplicates)' != 'false' "\r
323                                                   KeepMetadata="$(_GCTPDIKeepMetadata)"\r
324                                                   Include="@(_AllChildProjectPublishItemsWithTargetPath->'%(FullPath)')"\r
325                                                   Condition="'%(_AllChildProjectPublishItemsWithTargetPath.CopyToPublishDirectory)'=='Always'"/>\r
326 \r
327       <_SourceItemsToCopyToPublishDirectory KeepDuplicates=" '$(_GCTPDIKeepDuplicates)' != 'false' "\r
328                                             KeepMetadata="$(_GCTPDIKeepMetadata)"\r
329                                             Include="@(_AllChildProjectPublishItemsWithTargetPath->'%(FullPath)')"\r
330                                             Condition="'%(_AllChildProjectPublishItemsWithTargetPath.CopyToPublishDirectory)'=='PreserveNewest'"/>\r
331     </ItemGroup>\r
332 \r
333     <!-- Remove items which we will never again use - they just sit around taking up memory otherwise -->\r
334     <ItemGroup>\r
335       <_AllChildProjectPublishItemsWithTargetPath Remove="@(_AllChildProjectPublishItemsWithTargetPath)"/>\r
336     </ItemGroup>\r
337 \r
338     <!-- Get items from this project last so that they will be copied last. -->\r
339     <ItemGroup>\r
340       <_SourceItemsToCopyToPublishDirectoryAlways KeepMetadata="$(_GCTPDIKeepMetadata)"\r
341                                                   Include="@(ContentWithTargetPath->'%(FullPath)')"\r
342                                                   Condition="'%(ContentWithTargetPath.CopyToPublishDirectory)'=='Always'"/>\r
343       <_SourceItemsToCopyToPublishDirectory KeepMetadata="$(_GCTPDIKeepMetadata)"\r
344                                             Include="@(ContentWithTargetPath->'%(FullPath)')"\r
345                                             Condition="'%(ContentWithTargetPath.CopyToPublishDirectory)'=='PreserveNewest'"/>\r
346     </ItemGroup>\r
347 \r
348     <ItemGroup>\r
349       <_SourceItemsToCopyToPublishDirectoryAlways KeepMetadata="$(_GCTPDIKeepMetadata)"\r
350                                                   Include="@(EmbeddedResource->'%(FullPath)')"\r
351                                                   Condition="'%(EmbeddedResource.CopyToPublishDirectory)'=='Always'"/>\r
352       <_SourceItemsToCopyToPublishDirectory KeepMetadata="$(_GCTPDIKeepMetadata)"\r
353                                             Include="@(EmbeddedResource->'%(FullPath)')"\r
354                                             Condition="'%(EmbeddedResource.CopyToPublishDirectory)'=='PreserveNewest'"/>\r
355     </ItemGroup>\r
356 \r
357     <ItemGroup>\r
358       <_CompileItemsToPublish Include="@(Compile->'%(FullPath)')"\r
359                               Condition="'%(Compile.CopyToPublishDirectory)'=='Always' or '%(Compile.CopyToPublishDirectory)'=='PreserveNewest'"/>\r
360     </ItemGroup>\r
361 \r
362     <AssignTargetPath Files="@(_CompileItemsToPublish)" RootFolder="$(MSBuildProjectDirectory)">\r
363       <Output TaskParameter="AssignedFiles" ItemName="_CompileItemsToPublishWithTargetPath" />\r
364     </AssignTargetPath>\r
365 \r
366     <ItemGroup>\r
367       <_SourceItemsToCopyToPublishDirectoryAlways KeepMetadata="$(_GCTPDIKeepMetadata)"\r
368                                                   Include="@(_CompileItemsToPublishWithTargetPath)"\r
369                                                   Condition="'%(_CompileItemsToPublishWithTargetPath.CopyToPublishDirectory)'=='Always'"/>\r
370       <_SourceItemsToCopyToPublishDirectory KeepMetadata="$(_GCTPDIKeepMetadata)"\r
371                                            Include="@(_CompileItemsToPublishWithTargetPath)"\r
372                                            Condition="'%(_CompileItemsToPublishWithTargetPath.CopyToPublishDirectory)'=='PreserveNewest'"/>\r
373     </ItemGroup>\r
374 \r
375     <ItemGroup>\r
376       <_SourceItemsToCopyToPublishDirectoryAlways KeepMetadata="$(_GCTPDIKeepMetadata)"\r
377                                                   Include="@(_NoneWithTargetPath->'%(FullPath)')"\r
378                                                   Condition="'%(_NoneWithTargetPath.CopyToPublishDirectory)'=='Always'"/>\r
379       <_SourceItemsToCopyToPublishDirectory KeepMetadata="$(_GCTPDIKeepMetadata)"\r
380                                             Include="@(_NoneWithTargetPath->'%(FullPath)')"\r
381                                             Condition="'%(_NoneWithTargetPath.CopyToPublishDirectory)'=='PreserveNewest'"/>\r
382     </ItemGroup>\r
383 \r
384     <ItemGroup>\r
385       <AllPublishItemsFullPathWithTargetPath Include="@(_SourceItemsToCopyToPublishDirectoryAlways->'%(FullPath)');@(_SourceItemsToCopyToPublishDirectory->'%(FullPath)')"/>\r
386     </ItemGroup>\r
387 \r
388   </Target>\r
389 \r
390   <!--\r
391     ============================================================\r
392                                         DefaultCopyToPublishDirectoryMetadata\r
393 \r
394     If CopyToPublishDirectory isn't set on these items, the value should be taken from CopyToOutputDirectory.\r
395     This way, projects can just set "CopyToOutputDirectory = Always/PreserveNewest" and by default the item will be copied\r
396     to both the build output and publish directories.\r
397     ============================================================\r
398     -->\r
399   <Target Name="DefaultCopyToPublishDirectoryMetadata"\r
400           DependsOnTargets="AssignTargetPaths"\r
401           Condition=" '$(DefaultCopyToPublishDirectoryMetadata)' == 'true' ">\r
402 \r
403     <ItemGroup>\r
404       <ContentWithTargetPath Condition="'%(ContentWithTargetPath.CopyToOutputDirectory)'=='Always' and '%(ContentWithTargetPath.CopyToPublishDirectory)' == ''">\r
405         <CopyToPublishDirectory>Always</CopyToPublishDirectory>\r
406       </ContentWithTargetPath>\r
407       <ContentWithTargetPath Condition="'%(ContentWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest' and '%(ContentWithTargetPath.CopyToPublishDirectory)' == ''">\r
408         <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>\r
409       </ContentWithTargetPath>\r
410 \r
411       <EmbeddedResource Condition="'%(EmbeddedResource.CopyToOutputDirectory)'=='Always' and '%(EmbeddedResource.CopyToPublishDirectory)' == ''">\r
412         <CopyToPublishDirectory>Always</CopyToPublishDirectory>\r
413       </EmbeddedResource>\r
414       <EmbeddedResource Condition="'%(EmbeddedResource.CopyToOutputDirectory)'=='PreserveNewest' and '%(EmbeddedResource.CopyToPublishDirectory)' == ''">\r
415         <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>\r
416       </EmbeddedResource>\r
417 \r
418       <Compile Condition="'%(Compile.CopyToOutputDirectory)'=='Always' and '%(Compile.CopyToPublishDirectory)' == ''">\r
419         <CopyToPublishDirectory>Always</CopyToPublishDirectory>\r
420       </Compile>\r
421       <Compile Condition="'%(Compile.CopyToOutputDirectory)'=='PreserveNewest' and '%(Compile.CopyToPublishDirectory)' == ''">\r
422         <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>\r
423       </Compile>\r
424 \r
425       <_NoneWithTargetPath Condition="'%(_NoneWithTargetPath.CopyToOutputDirectory)'=='Always' and '%(_NoneWithTargetPath.CopyToPublishDirectory)' == ''">\r
426         <CopyToPublishDirectory>Always</CopyToPublishDirectory>\r
427       </_NoneWithTargetPath>\r
428       <_NoneWithTargetPath Condition="'%(_NoneWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest' and '%(_NoneWithTargetPath.CopyToPublishDirectory)' == ''">\r
429         <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>\r
430       </_NoneWithTargetPath>\r
431 \r
432     </ItemGroup>\r
433 \r
434   </Target>\r
435 \r
436   <!--\r
437     ============================================================\r
438                                         GeneratePublishDependencyFile\r
439 \r
440     Generates the $(project).deps.json file for a published app\r
441     ============================================================\r
442     -->\r
443   <Target Name="GeneratePublishDependencyFile"\r
444           DependsOnTargets="ComputePrivateAssetsPackageReferences;\r
445                             _DefaultMicrosoftNETPlatformLibrary"\r
446           Condition="'$(GenerateDependencyFile)' == 'true'">\r
447 \r
448     <PropertyGroup>\r
449       <PublishDepsFilePath Condition=" '$(PublishDepsFilePath)' == '' ">$(PublishDir)$(ProjectDepsFileName)</PublishDepsFilePath>\r
450     </PropertyGroup>\r
451 \r
452     <GenerateDepsFile ProjectPath="$(MSBuildProjectFullPath)"\r
453                       AssetsFilePath="$(ProjectAssetsFile)"\r
454                       DepsFilePath="$(PublishDepsFilePath)"\r
455                       TargetFramework="$(TargetFrameworkMoniker)"\r
456                       AssemblyName="$(AssemblyName)"\r
457                       AssemblyExtension="$(TargetExt)"\r
458                       AssemblyVersion="$(Version)"\r
459                       AssemblySatelliteAssemblies="@(IntermediateSatelliteAssembliesWithTargetPath)"\r
460                       ReferencePaths="@(ReferencePath)"\r
461                       ReferenceSatellitePaths="@(ReferenceSatellitePaths)"\r
462                       RuntimeIdentifier="$(RuntimeIdentifier)"\r
463                       PlatformLibraryName="$(MicrosoftNETPlatformLibrary)"\r
464                       CompilerOptions="@(DependencyFileCompilerOptions)"\r
465                       PrivateAssetsPackageReferences="@(PrivateAssetsPackageReference)" />\r
466 \r
467   </Target>\r
468 \r
469   <!--\r
470     ============================================================\r
471                                         ComputePrivateAssetsPackageReferences\r
472 \r
473     Builds up the @(PrivateAssetsPackageReference) item by looking for @(PackageReference) items with \r
474     <PrivateAssets> metadata.\r
475     ============================================================\r
476     -->\r
477   <PropertyGroup>\r
478     <ComputePrivateAssetsPackageReferences Condition="'$(ComputePrivateAssetsPackageReferences)' == ''">true</ComputePrivateAssetsPackageReferences>\r
479   </PropertyGroup>\r
480 \r
481   <Target Name="ComputePrivateAssetsPackageReferences"\r
482           Condition="'$(ComputePrivateAssetsPackageReferences)' == 'true'">\r
483 \r
484     <ItemGroup>\r
485       <PrivateAssetsPackageReference Include="@(PackageReference)"\r
486                                      Condition="'%(PackageReference.PrivateAssets)' == 'All'" />\r
487     </ItemGroup>\r
488 \r
489   </Target>\r
490 \r
491 \r
492   <!--\r
493     ============================================================\r
494                                         GeneratePublishRuntimeConfigurationFile\r
495 \r
496     Generates the $(project).runtimeconfig.json file for a published app\r
497     ============================================================\r
498     -->\r
499 \r
500   <Target Name="GeneratePublishRuntimeConfigurationFile"\r
501           DependsOnTargets="_DefaultMicrosoftNETPlatformLibrary"\r
502           Condition="'$(GenerateRuntimeConfigurationFiles)' == 'true'">\r
503 \r
504     <PropertyGroup>\r
505       <PublishRuntimeConfigFilePath Condition=" '$(PublishRuntimeConfigFilePath)' == '' ">$(PublishDir)$(ProjectRuntimeConfigFileName)</PublishRuntimeConfigFilePath>\r
506     </PropertyGroup>\r
507 \r
508     <GenerateRuntimeConfigurationFiles AssetsFilePath="$(ProjectAssetsFile)"\r
509                                        TargetFrameworkMoniker="$(TargetFrameworkMoniker)"\r
510                                        TargetFramework="$(TargetFramework)"\r
511                                        RuntimeConfigPath="$(PublishRuntimeConfigFilePath)"\r
512                                        RuntimeIdentifier="$(RuntimeIdentifier)"\r
513                                        PlatformLibraryName="$(MicrosoftNETPlatformLibrary)"\r
514                                        UserRuntimeConfig="$(UserRuntimeConfig)"\r
515                                        HostConfigurationOptions="@(RuntimeHostConfigurationOption)" />\r
516 \r
517   </Target>\r
518 \r
519   <!--\r
520     ============================================================\r
521                                         DeployAppHost\r
522 \r
523     Deploys the host to run the stand alone app and ensures it matches the app name\r
524     ============================================================\r
525     -->\r
526 \r
527   <Target Name="DeployAppHost"\r
528           DependsOnTargets="_ComputeNETCoreBuildOutputFiles"\r
529           AfterTargets="ComputeFilesToPublish"\r
530           BeforeTargets="CopyFilesToPublishDirectory"\r
531           Condition="'$(DeployAppHost)' == 'true'">\r
532 \r
533     <ItemGroup>\r
534 \r
535       <ResolvedFileToRemove  Include ="%(ResolvedFileToPublish.Identity)" Condition="'%(ResolvedFileToPublish.RelativePath)' == '$(_DotNetHostExecutableName)' Or '%(ResolvedFileToPublish.RelativePath)' == '$(_DotNetAppHostExecutableName)'"/>\r
536       <ResolvedFileToPublish Remove ="%(ResolvedFileToRemove.Identity)"/>\r
537 \r
538       <ResolvedFileToPublish Include="%(NativeAppHostNETCore.Identity)">\r
539         <RelativePath>$(AssemblyName)%(Extension)</RelativePath>\r
540       </ResolvedFileToPublish>\r
541       \r
542 \r
543     </ItemGroup>\r
544 \r
545   </Target>\r
546 \r
547 </Project>\r