diff options
Diffstat (limited to 'src/BuildIntegration/Microsoft.NETCore.Native.Publish.targets')
-rw-r--r-- | src/BuildIntegration/Microsoft.NETCore.Native.Publish.targets | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/BuildIntegration/Microsoft.NETCore.Native.Publish.targets b/src/BuildIntegration/Microsoft.NETCore.Native.Publish.targets new file mode 100644 index 000000000..755aa647f --- /dev/null +++ b/src/BuildIntegration/Microsoft.NETCore.Native.Publish.targets @@ -0,0 +1,61 @@ +<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + + <PropertyGroup> + <BuildTasksPath Condition="'$(BuildTasksPath)' == ''">$(MSBuildThisFileDirectory)..\tools\ILCompiler.Build.Tasks.dll</BuildTasksPath> + + <!-- + Prevent dotnet CLI from deploying the CoreCLR shim executable since we produce + a native executable. + --> + <DeployAppHost>false</DeployAppHost> + </PropertyGroup> + + <Target Name="_ComputeIlcCompileInputs" + BeforeTargets="ComputeIlcCompileInputs"> + <ItemGroup> + <IlcReference Include="@(_ManagedResolvedAssembliesToPublish)" /> + </ItemGroup> + </Target> + + <!-- + This target hooks into the dotnet CLI publish pipeline. That pipeline has + a target called ComputeFilesToPublish which produces the ItemGroup + ResolvedFileToPublish based on the inputs of @(IntermediateAssembly) + and @(ResolvedAssembliesToPublish). We modify those two item groups + to control what gets published after CoreRT optimizes the application. + --> + <Target Name="ComputeLinkedFilesToPublish" + BeforeTargets="ComputeFilesToPublish" + DependsOnTargets="_ComputeAssembliesToCompileToNative;LinkNative"> + + <ItemGroup> + <ResolvedAssembliesToPublish Remove="@(_AssembliesToSkipPublish)" /> + <ResolvedAssembliesToPublish Include="@(_LinkedResolvedAssemblies)" /> + </ItemGroup> + + <ItemGroup> + <_NativeIntermediateAssembly Include="@(IntermediateAssembly->'$(NativeOutputPath)%(Filename)$(NativeBinaryExt)')" /> + <IntermediateAssembly Remove="@(IntermediateAssembly)" /> + <IntermediateAssembly Include="@(_NativeIntermediateAssembly)" /> + </ItemGroup> + </Target> + + <!-- + Filter the input publish file list selecting managed assemblies for compilation. + Also produces _AssembliesToSkipPublish which chops out things from the publish + pipeline we don't want to see in the output (native images, CoreCLR artifacts) + until we get a proper AOT NetCore app package. + --> + <UsingTask TaskName="ComputeManagedAssemblies" AssemblyFile="$(BuildTasksPath)" /> + <Target Name="_ComputeAssembliesToCompileToNative"> + + <ComputeManagedAssemblies Assemblies="@(ResolvedAssembliesToPublish)" + DotNetAppHostExecutableName="$(_DotNetAppHostExecutableName)" DotNetHostFxrLibraryName="$(_DotNetHostFxrLibraryName)" DotNetHostPolicyLibraryName="$(_DotNetHostPolicyLibraryName)" + SdkAssemblies="@(PrivateSdkAssemblies)" FrameworkAssemblies="@(FrameworkAssemblies)"> + <Output TaskParameter="ManagedAssemblies" ItemName="_ManagedResolvedAssembliesToPublish" /> + <Output TaskParameter="AssembliesToSkipPublish" ItemName="_AssembliesToSkipPublish" /> + </ComputeManagedAssemblies> + + </Target> + +</Project> |