diff options
Diffstat (limited to 'Tools/dotnetcli/sdk/2.1.2/Sdks/Microsoft.NET.Sdk/build/Microsoft.NET.Publish.targets')
-rwxr-xr-x | Tools/dotnetcli/sdk/2.1.2/Sdks/Microsoft.NET.Sdk/build/Microsoft.NET.Publish.targets | 590 |
1 files changed, 590 insertions, 0 deletions
diff --git a/Tools/dotnetcli/sdk/2.1.2/Sdks/Microsoft.NET.Sdk/build/Microsoft.NET.Publish.targets b/Tools/dotnetcli/sdk/2.1.2/Sdks/Microsoft.NET.Sdk/build/Microsoft.NET.Publish.targets new file mode 100755 index 0000000000..b79f3ccdd6 --- /dev/null +++ b/Tools/dotnetcli/sdk/2.1.2/Sdks/Microsoft.NET.Sdk/build/Microsoft.NET.Publish.targets @@ -0,0 +1,590 @@ +<!-- +*********************************************************************************************** +Microsoft.NET.Publish.targets + +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have + created a backup copy. Incorrect changes to this file will make it + impossible to load or build your projects from the command-line or the IDE. + +Copyright (c) .NET Foundation. All rights reserved. +*********************************************************************************************** +--> +<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + + <PropertyGroup> + <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects> + + <DefaultCopyToPublishDirectoryMetadata Condition="'$(DefaultCopyToPublishDirectoryMetadata)' == ''">true</DefaultCopyToPublishDirectoryMetadata> + <_GetChildProjectCopyToPublishDirectoryItems Condition="'$(_GetChildProjectCopyToPublishDirectoryItems)' == ''">true</_GetChildProjectCopyToPublishDirectoryItems> + + <!-- publishing self-contained apps should publish the native host as $(AssemblyName).exe --> + <DeployAppHost Condition=" '$(DeployAppHost)' == '' and '$(_IsExecutable)' == 'true' and '$(RuntimeIdentifier)' != '' and '$(SelfContained)' == 'true'">true</DeployAppHost> + + <IsPublishable Condition="'$(IsPublishable)'==''">true</IsPublishable> + </PropertyGroup> + + <ItemDefinitionGroup> + <ResolvedFileToPublish> + <CopyToPublishDirectory>Always</CopyToPublishDirectory> + </ResolvedFileToPublish> + </ItemDefinitionGroup> + + <!-- + ============================================================ + Publish + + The main publish entry point. + ============================================================ + --> + <Target Name="Publish" + Condition="$(IsPublishable) == 'true'" + DependsOnTargets="Build; + PrepareForPublish; + ComputeAndCopyFilesToPublishDirectory; + GeneratePublishDependencyFile; + GeneratePublishRuntimeConfigurationFile"> + + <!-- Ensure there is minimal verbosity output pointing to the publish directory and not just the + build step's minimal output. Otherwise there is no indication at minimal verbosity of where + the published assets were copied. --> + <Message Importance="High" Text="$(MSBuildProjectName) -> $([System.IO.Path]::GetFullPath('$(PublishDir)'))" /> + </Target> + + <!-- + ============================================================ + PrepareForPublish + + Prepare the prerequisites for publishing. + ============================================================ + --> + <Target Name="PrepareForPublish"> + + <PropertyGroup> + <!-- Ensure any PublishDir has a trailing slash, so it can be concatenated --> + <PublishDir Condition="!HasTrailingSlash('$(PublishDir)')">$(PublishDir)\</PublishDir> + </PropertyGroup> + + <MakeDir Directories="$(PublishDir)" /> + + </Target> + + <!-- + ============================================================ + ComputeAndCopyFilesToPublishDirectory + + Computes the list of all files to copy to the publish directory and then publishes them. + ============================================================ + --> + <Target Name="ComputeAndCopyFilesToPublishDirectory" + DependsOnTargets="ComputeFilesToPublish; + CopyFilesToPublishDirectory" /> + + <!-- + ============================================================ + CopyFilesToPublishDirectory + + Copy all build outputs, satellites and other necessary files to the publish directory. + ============================================================ + --> + <Target Name="CopyFilesToPublishDirectory" + DependsOnTargets="_CopyResolvedFilesToPublishPreserveNewest; + _CopyResolvedFilesToPublishAlways" /> + + <!-- + ============================================================ + _CopyResolvedFilesToPublishPreserveNewest + + Copy _ResolvedFileToPublishPreserveNewest items to the publish directory. + ============================================================ + --> + <Target Name="_CopyResolvedFilesToPublishPreserveNewest" + DependsOnTargets="_ComputeResolvedFilesToPublishTypes" + Inputs="@(_ResolvedFileToPublishPreserveNewest)" + Outputs="@(_ResolvedFileToPublishPreserveNewest->'$(PublishDir)%(RelativePath)')"> + + <!-- + Not using SkipUnchangedFiles="true" because the application may want to change + one of these files and not have an incremental build replace it. + --> + <Copy SourceFiles = "@(_ResolvedFileToPublishPreserveNewest)" + DestinationFiles="@(_ResolvedFileToPublishPreserveNewest->'$(PublishDir)%(RelativePath)')" + OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" + Retries="$(CopyRetryCount)" + RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" + UseHardlinksIfPossible="$(CreateHardLinksForPublishFilesIfPossible)" + UseSymboliclinksIfPossible="$(CreateSymbolicLinksForPublishFilesIfPossible)"> + + <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/> + + </Copy> + + </Target> + + <!-- + ============================================================ + _CopyResolvedFilesToPublishAlways + + Copy _ResolvedFileToPublishAlways items to the publish directory. + ============================================================ + --> + <Target Name="_CopyResolvedFilesToPublishAlways" + DependsOnTargets="_ComputeResolvedFilesToPublishTypes"> + + <!-- + Not using SkipUnchangedFiles="true" because the application may want to change + one of these files and not have an incremental build replace it. + --> + <Copy SourceFiles = "@(_ResolvedFileToPublishAlways)" + DestinationFiles="@(_ResolvedFileToPublishAlways->'$(PublishDir)%(RelativePath)')" + OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" + Retries="$(CopyRetryCount)" + RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" + UseHardlinksIfPossible="$(CreateHardLinksForPublishFilesIfPossible)" + UseSymboliclinksIfPossible="$(CreateSymbolicLinksForPublishFilesIfPossible)"> + + <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/> + + </Copy> + + </Target> + + <!-- + ============================================================ + _ComputeResolvedFilesToPublishTypes + + Splits ResolvedFileToPublish items into 'PreserveNewest' and 'Always' buckets. + ============================================================ + --> + <Target Name="_ComputeResolvedFilesToPublishTypes"> + <ItemGroup> + <_ResolvedFileToPublishPreserveNewest Include="@(ResolvedFileToPublish)" + Condition="'%(ResolvedFileToPublish.CopyToPublishDirectory)'=='PreserveNewest'" /> + + <_ResolvedFileToPublishAlways Include="@(ResolvedFileToPublish)" + Condition="'%(ResolvedFileToPublish.CopyToPublishDirectory)'=='Always'" /> + </ItemGroup> + </Target> + + + <!-- + ============================================================ + ComputeFilesToPublish + + Gathers all the files that need to be copied to the publish directory. + ============================================================ + --> + <Target Name="ComputeFilesToPublish" + DependsOnTargets="_ComputeNetPublishAssets; + _ComputeCopyToPublishDirectoryItems"> + + <PropertyGroup> + <CopyBuildOutputToPublishDirectory Condition="'$(CopyBuildOutputToPublishDirectory)'==''">true</CopyBuildOutputToPublishDirectory> + <CopyOutputSymbolsToPublishDirectory Condition="'$(CopyOutputSymbolsToPublishDirectory)'==''">true</CopyOutputSymbolsToPublishDirectory> + </PropertyGroup> + + <ItemGroup> + <!-- Copy the build product (.dll or .exe). --> + <ResolvedFileToPublish Include="@(IntermediateAssembly)" + Condition="'$(CopyBuildOutputToPublishDirectory)' == 'true'"> + <RelativePath>@(IntermediateAssembly->'%(Filename)%(Extension)')</RelativePath> + </ResolvedFileToPublish> + + <!-- Copy the app.config (if any) --> + <ResolvedFileToPublish Include="@(AppConfigWithTargetPath)" + Condition="'$(CopyBuildOutputToPublishDirectory)' == 'true'"> + <RelativePath>@(AppConfigWithTargetPath->'%(TargetPath)')</RelativePath> + </ResolvedFileToPublish> + + <!-- Copy the debug information file (.pdb), if any --> + <ResolvedFileToPublish Include="@(_DebugSymbolsIntermediatePath)" + Condition="'$(_DebugSymbolsProduced)'=='true' and '$(CopyOutputSymbolsToPublishDirectory)'=='true'"> + <RelativePath>@(_DebugSymbolsIntermediatePath->'%(Filename)%(Extension)')</RelativePath> + </ResolvedFileToPublish> + + <!-- Copy satellite assemblies. --> + <ResolvedFileToPublish Include="@(IntermediateSatelliteAssembliesWithTargetPath)"> + <RelativePath>%(IntermediateSatelliteAssembliesWithTargetPath.Culture)\%(Filename)%(Extension)</RelativePath> + </ResolvedFileToPublish> + + <!-- Copy all the assemblies --> + <ResolvedFileToPublish Include="@(ResolvedAssembliesToPublish)"> + <RelativePath>%(ResolvedAssembliesToPublish.DestinationSubPath)</RelativePath> + </ResolvedFileToPublish> + + <!-- Copy the xml documentation (if enabled) --> + <ResolvedFileToPublish Include="@(FinalDocFile)" + Condition="'$(PublishDocumentationFile)' == 'true'"> + <RelativePath>@(FinalDocFile->'%(Filename)%(Extension)')</RelativePath> + </ResolvedFileToPublish> + </ItemGroup> + + </Target> + + <Target Name="_ComputeNetPublishAssets" + DependsOnTargets="RunResolvePublishAssemblies"> + <!-- TODO get the content files --> + <!-- TODO perform any preprocess transforms on the files --> + + <ItemGroup> + <ResolvedAssembliesToPublish Include="@(ReferenceCopyLocalPaths)" + Exclude="@(ResolvedAssembliesToPublish)" + Condition="'$(PublishReferencesDocumentationFiles)' == 'true' or '%(Extension)' != '.xml'"> + <DestinationSubPath>%(ReferenceCopyLocalPaths.DestinationSubDirectory)%(Filename)%(Extension)</DestinationSubPath> + </ResolvedAssembliesToPublish> + </ItemGroup> + </Target> + + <!-- + ============================================================ + RunResolvePublishAssemblies + + Gets the assemblies to be copied to the publish directory + ============================================================ + --> + <UsingTask TaskName="ResolvePublishAssemblies" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" /> + <Target Name="RunResolvePublishAssemblies" + DependsOnTargets="_ComputeExcludeFromPublishPackageReferences; + _ParseTargetManifestFiles; + _DefaultMicrosoftNETPlatformLibrary"> + <ResolvePublishAssemblies ProjectPath="$(MSBuildProjectFullPath)" + AssetsFilePath="$(ProjectAssetsFile)" + TargetFramework="$(TargetFrameworkMoniker)" + RuntimeIdentifier="$(RuntimeIdentifier)" + PlatformLibraryName="$(MicrosoftNETPlatformLibrary)" + ExcludeFromPublishPackageReferences="@(_ExcludeFromPublishPackageReference)" + RuntimeStorePackages="@(RuntimeStorePackages)" + PreserveStoreLayout="$(PreserveStoreLayout)" + IsSelfContained="$(SelfContained)" > + + <Output TaskParameter="AssembliesToPublish" ItemName="ResolvedAssembliesToPublish" /> + </ResolvePublishAssemblies> + </Target> + + <!-- + ============================================================ + _ComputeCopyToPublishDirectoryItems + ============================================================ + --> + <Target Name="_ComputeCopyToPublishDirectoryItems" + DependsOnTargets="GetCopyToPublishDirectoryItems"> + + <ItemGroup> + <ResolvedFileToPublish Include="@(_SourceItemsToCopyToPublishDirectoryAlways)"> + <RelativePath>%(_SourceItemsToCopyToPublishDirectoryAlways.TargetPath)</RelativePath> + <CopyToPublishDirectory>Always</CopyToPublishDirectory> + </ResolvedFileToPublish> + + <ResolvedFileToPublish Include="@(_SourceItemsToCopyToPublishDirectory)"> + <RelativePath>%(_SourceItemsToCopyToPublishDirectory.TargetPath)</RelativePath> + <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> + </ResolvedFileToPublish> + </ItemGroup> + + </Target> + + <!-- + ============================================================ + GetCopyToPublishDirectoryItems + + Get all project items that may need to be transferred to the publish directory. + This includes baggage items from transitively referenced projects. It would appear + that this target computes full transitive closure of content items for all referenced + projects; however that is not the case. It only collects the content items from its + immediate children and not children of children. + + See comment on GetCopyToOutputDirectoryItems, from which this logic was taken. + ============================================================ + --> + <Target Name="GetCopyToPublishDirectoryItems" + Returns="@(AllPublishItemsFullPathWithTargetPath)" + KeepDuplicateOutputs=" '$(MSBuildDisableGetCopyToPublishDirectoryItemsOptimization)' == '' " + DependsOnTargets="AssignTargetPaths; + DefaultCopyToPublishDirectoryMetadata; + _SplitProjectReferencesByFileExistence; + _GetProjectReferenceTargetFrameworkProperties"> + + + <!-- 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 + cases, we can immediately discard the unwanted metadata, reducing memory usage, particularly in very large and interconnected systems of projects. + However, if some client does require the original functionality, it is sufficient to set MSBuildDisableGetCopyToPublishDirectoryItemsOptimization to + a non-empty value and the original behavior will be restored. --> + <PropertyGroup Condition=" '$(MSBuildDisableGetCopyToPublishDirectoryItemsOptimization)' == '' "> + <_GCTPDIKeepDuplicates>false</_GCTPDIKeepDuplicates> + <_GCTPDIKeepMetadata>CopyToPublishDirectory;TargetPath</_GCTPDIKeepMetadata> + </PropertyGroup> + + <!-- Get items from child projects first. --> + <MSBuild Projects="@(_MSBuildProjectReferenceExistent)" + Targets="GetCopyToPublishDirectoryItems" + BuildInParallel="$(BuildInParallel)" + Properties="%(_MSBuildProjectReferenceExistent.SetConfiguration); %(_MSBuildProjectReferenceExistent.SetPlatform); %(_MSBuildProjectReferenceExistent.SetTargetFramework)" + Condition="'@(_MSBuildProjectReferenceExistent)' != '' and '$(_GetChildProjectCopyToPublishDirectoryItems)' == 'true' and '%(_MSBuildProjectReferenceExistent.Private)' != 'false'" + ContinueOnError="$(ContinueOnError)" + RemoveProperties="%(_MSBuildProjectReferenceExistent.GlobalPropertiesToRemove)"> + + <Output TaskParameter="TargetOutputs" ItemName="_AllChildProjectPublishItemsWithTargetPath"/> + + </MSBuild> + + <!-- Target outputs must be full paths because they will be consumed by a different project. --> + <ItemGroup> + <_SourceItemsToCopyToPublishDirectoryAlways KeepDuplicates=" '$(_GCTPDIKeepDuplicates)' != 'false' " + KeepMetadata="$(_GCTPDIKeepMetadata)" + Include="@(_AllChildProjectPublishItemsWithTargetPath->'%(FullPath)')" + Condition="'%(_AllChildProjectPublishItemsWithTargetPath.CopyToPublishDirectory)'=='Always'"/> + + <_SourceItemsToCopyToPublishDirectory KeepDuplicates=" '$(_GCTPDIKeepDuplicates)' != 'false' " + KeepMetadata="$(_GCTPDIKeepMetadata)" + Include="@(_AllChildProjectPublishItemsWithTargetPath->'%(FullPath)')" + Condition="'%(_AllChildProjectPublishItemsWithTargetPath.CopyToPublishDirectory)'=='PreserveNewest'"/> + </ItemGroup> + + <!-- Remove items which we will never again use - they just sit around taking up memory otherwise --> + <ItemGroup> + <_AllChildProjectPublishItemsWithTargetPath Remove="@(_AllChildProjectPublishItemsWithTargetPath)"/> + </ItemGroup> + + <!-- Get items from this project last so that they will be copied last. --> + <ItemGroup> + <_SourceItemsToCopyToPublishDirectoryAlways KeepMetadata="$(_GCTPDIKeepMetadata)" + Include="@(ContentWithTargetPath->'%(FullPath)')" + Condition="'%(ContentWithTargetPath.CopyToPublishDirectory)'=='Always'"/> + <_SourceItemsToCopyToPublishDirectory KeepMetadata="$(_GCTPDIKeepMetadata)" + Include="@(ContentWithTargetPath->'%(FullPath)')" + Condition="'%(ContentWithTargetPath.CopyToPublishDirectory)'=='PreserveNewest'"/> + </ItemGroup> + + <ItemGroup> + <_SourceItemsToCopyToPublishDirectoryAlways KeepMetadata="$(_GCTPDIKeepMetadata)" + Include="@(EmbeddedResource->'%(FullPath)')" + Condition="'%(EmbeddedResource.CopyToPublishDirectory)'=='Always'"/> + <_SourceItemsToCopyToPublishDirectory KeepMetadata="$(_GCTPDIKeepMetadata)" + Include="@(EmbeddedResource->'%(FullPath)')" + Condition="'%(EmbeddedResource.CopyToPublishDirectory)'=='PreserveNewest'"/> + </ItemGroup> + + <ItemGroup> + <_CompileItemsToPublish Include="@(Compile->'%(FullPath)')" + Condition="'%(Compile.CopyToPublishDirectory)'=='Always' or '%(Compile.CopyToPublishDirectory)'=='PreserveNewest'"/> + </ItemGroup> + + <AssignTargetPath Files="@(_CompileItemsToPublish)" RootFolder="$(MSBuildProjectDirectory)"> + <Output TaskParameter="AssignedFiles" ItemName="_CompileItemsToPublishWithTargetPath" /> + </AssignTargetPath> + + <ItemGroup> + <_SourceItemsToCopyToPublishDirectoryAlways KeepMetadata="$(_GCTPDIKeepMetadata)" + Include="@(_CompileItemsToPublishWithTargetPath)" + Condition="'%(_CompileItemsToPublishWithTargetPath.CopyToPublishDirectory)'=='Always'"/> + <_SourceItemsToCopyToPublishDirectory KeepMetadata="$(_GCTPDIKeepMetadata)" + Include="@(_CompileItemsToPublishWithTargetPath)" + Condition="'%(_CompileItemsToPublishWithTargetPath.CopyToPublishDirectory)'=='PreserveNewest'"/> + </ItemGroup> + + <ItemGroup> + <_SourceItemsToCopyToPublishDirectoryAlways KeepMetadata="$(_GCTPDIKeepMetadata)" + Include="@(_NoneWithTargetPath->'%(FullPath)')" + Condition="'%(_NoneWithTargetPath.CopyToPublishDirectory)'=='Always'"/> + <_SourceItemsToCopyToPublishDirectory KeepMetadata="$(_GCTPDIKeepMetadata)" + Include="@(_NoneWithTargetPath->'%(FullPath)')" + Condition="'%(_NoneWithTargetPath.CopyToPublishDirectory)'=='PreserveNewest'"/> + </ItemGroup> + + <ItemGroup> + <AllPublishItemsFullPathWithTargetPath Include="@(_SourceItemsToCopyToPublishDirectoryAlways->'%(FullPath)');@(_SourceItemsToCopyToPublishDirectory->'%(FullPath)')"/> + </ItemGroup> + + </Target> + + <!-- + ============================================================ + DefaultCopyToPublishDirectoryMetadata + + If CopyToPublishDirectory isn't set on these items, the value should be taken from CopyToOutputDirectory. + This way, projects can just set "CopyToOutputDirectory = Always/PreserveNewest" and by default the item will be copied + to both the build output and publish directories. + ============================================================ + --> + <Target Name="DefaultCopyToPublishDirectoryMetadata" + DependsOnTargets="AssignTargetPaths" + Condition=" '$(DefaultCopyToPublishDirectoryMetadata)' == 'true' "> + + <ItemGroup> + <ContentWithTargetPath Condition="'%(ContentWithTargetPath.CopyToOutputDirectory)'=='Always' and '%(ContentWithTargetPath.CopyToPublishDirectory)' == ''"> + <CopyToPublishDirectory>Always</CopyToPublishDirectory> + </ContentWithTargetPath> + <ContentWithTargetPath Condition="'%(ContentWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest' and '%(ContentWithTargetPath.CopyToPublishDirectory)' == ''"> + <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> + </ContentWithTargetPath> + + <EmbeddedResource Condition="'%(EmbeddedResource.CopyToOutputDirectory)'=='Always' and '%(EmbeddedResource.CopyToPublishDirectory)' == ''"> + <CopyToPublishDirectory>Always</CopyToPublishDirectory> + </EmbeddedResource> + <EmbeddedResource Condition="'%(EmbeddedResource.CopyToOutputDirectory)'=='PreserveNewest' and '%(EmbeddedResource.CopyToPublishDirectory)' == ''"> + <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> + </EmbeddedResource> + + <Compile Condition="'%(Compile.CopyToOutputDirectory)'=='Always' and '%(Compile.CopyToPublishDirectory)' == ''"> + <CopyToPublishDirectory>Always</CopyToPublishDirectory> + </Compile> + <Compile Condition="'%(Compile.CopyToOutputDirectory)'=='PreserveNewest' and '%(Compile.CopyToPublishDirectory)' == ''"> + <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> + </Compile> + + <_NoneWithTargetPath Condition="'%(_NoneWithTargetPath.CopyToOutputDirectory)'=='Always' and '%(_NoneWithTargetPath.CopyToPublishDirectory)' == ''"> + <CopyToPublishDirectory>Always</CopyToPublishDirectory> + </_NoneWithTargetPath> + <_NoneWithTargetPath Condition="'%(_NoneWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest' and '%(_NoneWithTargetPath.CopyToPublishDirectory)' == ''"> + <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> + </_NoneWithTargetPath> + + </ItemGroup> + + </Target> + + <!-- + ============================================================ + GeneratePublishDependencyFile + + Generates the $(project).deps.json file for a published app + ============================================================ + --> + <Target Name="GeneratePublishDependencyFile" + DependsOnTargets="_ComputeExcludeFromPublishPackageReferences; + _ParseTargetManifestFiles; + _DefaultMicrosoftNETPlatformLibrary; + _HandlePackageFileConflicts; + _HandlePublishFileConflicts; + _ComputeReferenceAssemblies" + Condition="'$(GenerateDependencyFile)' == 'true'"> + + <PropertyGroup> + <PublishDepsFilePath Condition=" '$(PublishDepsFilePath)' == '' ">$(PublishDir)$(ProjectDepsFileName)</PublishDepsFilePath> + </PropertyGroup> + + <GenerateDepsFile ProjectPath="$(MSBuildProjectFullPath)" + AssetsFilePath="$(ProjectAssetsFile)" + DepsFilePath="$(PublishDepsFilePath)" + TargetFramework="$(TargetFrameworkMoniker)" + AssemblyName="$(AssemblyName)" + AssemblyExtension="$(TargetExt)" + AssemblyVersion="$(Version)" + AssemblySatelliteAssemblies="@(IntermediateSatelliteAssembliesWithTargetPath)" + ReferencePaths="@(ReferencePath)" + ReferenceSatellitePaths="@(ReferenceSatellitePaths)" + ReferenceAssemblies="@(_ReferenceAssemblies)" + IncludeMainProject="$(IncludeMainProjectInDepsFile)" + RuntimeIdentifier="$(RuntimeIdentifier)" + PlatformLibraryName="$(MicrosoftNETPlatformLibrary)" + FilesToSkip="@(_ConflictPackageFiles);@(_PublishConflictPackageFiles)" + CompilerOptions="@(DependencyFileCompilerOptions)" + ExcludeFromPublishPackageReferences="@(_ExcludeFromPublishPackageReference)" + RuntimeStorePackages="@(RuntimeStorePackages)" + IsSelfContained="$(SelfContained)" /> + + </Target> + + <!-- + ============================================================ + _ComputeExcludeFromPublishPackageReferences + + Builds up the @(_ExcludeFromPublishPackageReference) item by looking for @(PackageReference) items where + that have Publish=false metadata, or that have PrivateAssets=All and don't specify Publish + ============================================================ + --> + <PropertyGroup> + <_ComputeExcludeFromPublishPackageReferences Condition="'$(_ComputeExcludeFromPublishPackageReferences)' == ''">true</_ComputeExcludeFromPublishPackageReferences> + </PropertyGroup> + + <Target Name="_ComputeExcludeFromPublishPackageReferences" + Condition="'$(_ComputeExcludeFromPublishPackageReferences)' == 'true'"> + + <ItemGroup> + + <!-- PrivateAssets="All" means exclude from publish, unless Publish metadata is specified separately --> + <PackageReference Publish="false" + Condition="('%(PackageReference.PrivateAssets)' == 'All') And ('%(PackageReference.Publish)' == '')"/> + + <_ExcludeFromPublishPackageReference Include="@(PackageReference)" + Condition="('%(PackageReference.Publish)' == 'false')" /> + </ItemGroup> + + </Target> + + <!-- + ============================================================ + _ParseTargetManifestFiles + + Parses the $(TargetManifestFiles) which contains a list of files into @(RuntimeStorePackages) items + which describes which packages should be excluded from publish since they are contained in the runtime store. + ============================================================ + --> + <UsingTask TaskName="ParseTargetManifests" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" /> + <Target Name="_ParseTargetManifestFiles" + Condition="'$(TargetManifestFiles)' != ''" + Returns="@(RuntimeStorePackages)"> + + <ParseTargetManifests TargetManifestFiles="$(TargetManifestFiles)"> + <Output TaskParameter="RuntimeStorePackages" ItemName="RuntimeStorePackages"/> + </ParseTargetManifests> + + </Target> + + + <!-- + ============================================================ + GeneratePublishRuntimeConfigurationFile + + Generates the $(project).runtimeconfig.json file for a published app + ============================================================ + --> + + <Target Name="GeneratePublishRuntimeConfigurationFile" + DependsOnTargets="_DefaultMicrosoftNETPlatformLibrary" + Condition="'$(GenerateRuntimeConfigurationFiles)' == 'true'"> + + <PropertyGroup> + <PublishRuntimeConfigFilePath Condition=" '$(PublishRuntimeConfigFilePath)' == '' ">$(PublishDir)$(ProjectRuntimeConfigFileName)</PublishRuntimeConfigFilePath> + </PropertyGroup> + + <GenerateRuntimeConfigurationFiles AssetsFilePath="$(ProjectAssetsFile)" + TargetFrameworkMoniker="$(TargetFrameworkMoniker)" + TargetFramework="$(TargetFramework)" + RuntimeConfigPath="$(PublishRuntimeConfigFilePath)" + RuntimeIdentifier="$(RuntimeIdentifier)" + PlatformLibraryName="$(MicrosoftNETPlatformLibrary)" + UserRuntimeConfig="$(UserRuntimeConfig)" + HostConfigurationOptions="@(RuntimeHostConfigurationOption)" + IsSelfContained="$(SelfContained)" /> + + </Target> + + <!-- + ============================================================ + DeployAppHost + + Deploys the host to run the stand alone app and ensures it matches the app name + ============================================================ + --> + + <Target Name="DeployAppHost" + DependsOnTargets="_ComputeNETCoreBuildOutputFiles" + AfterTargets="ComputeFilesToPublish" + BeforeTargets="CopyFilesToPublishDirectory" + Condition="'$(DeployAppHost)' == 'true'"> + + <ItemGroup> + + <ResolvedFileToRemove Include ="%(ResolvedFileToPublish.Identity)" Condition="'%(ResolvedFileToPublish.RelativePath)' == '$(_DotNetHostExecutableName)' Or '%(ResolvedFileToPublish.RelativePath)' == '$(_DotNetAppHostExecutableName)'"/> + <ResolvedFileToPublish Remove ="%(ResolvedFileToRemove.Identity)"/> + + <ResolvedFileToPublish Include="%(NativeAppHostNETCore.Identity)"> + <RelativePath>$(AssemblyName)$(_NativeExecutableExtension)</RelativePath> + </ResolvedFileToPublish> + + + </ItemGroup> + + </Target> + +</Project> |