[Tizen] Update build tools to 2.1.0-rc1-03006-01
[platform/upstream/coreclr.git] / packages / microsoft.dotnet.buildtools / 2.1.0-rc1-03006-01 / lib / OptionalTooling.targets
1 <?xml version="1.0" encoding="utf-8"?>
2 <Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3
4   <UsingTask TaskName="GenerateEncryptedNuGetConfig" AssemblyFile="$(BuildToolsTaskDir)Microsoft.DotNet.Build.Tasks.dll" />
5   <UsingTask TaskName="GenerateUnencryptedNuGetConfig" AssemblyFile="$(BuildToolsTaskDir)Microsoft.DotNet.Build.Tasks.dll" />
6   <UsingTask TaskName="EncryptedConfigNuGetRestore" AssemblyFile="$(BuildToolsTaskDir)Microsoft.DotNet.Build.Tasks.dll" />
7   <UsingTask TaskName="PrereleaseResolveNuGetPackageAssets" AssemblyFile="$(BuildToolsTaskDir)Microsoft.DotNet.Build.Tasks.dll" />
8
9   <Target Name="RestoreOptionalToolingPackages"
10           DependsOnTargets="RestoreOptionalToolingEncrypted;
11                             RestoreOptionalToolingUnencrypted;
12                             CleanOptionalToolingRestore"
13           BeforeTargets="Sync"
14           Condition="'$(OptionalToolSource)'!=''" />
15
16   <!--
17     Create items for any feeds specified by parameters. This makes it easy to pass in an optional
18     source with an msbuild command.
19   -->
20   <Target Name="CreateOptionalRestoreFeedItems">
21     <ItemGroup>
22       <OptionalRestoreSource Include="FeedFromProperties">
23         <Uri>$(OptionalToolSource)</Uri>
24         <Username Condition="'$(OptionalToolSourceUser)'!=''">$(OptionalToolSourceUser)</Username>
25         <Password Condition="'$(OptionalToolSourcePassword)'!=''">$(OptionalToolSourcePassword)</Password>
26       </OptionalRestoreSource>
27     </ItemGroup>
28   </Target>
29
30   <!--
31     Determine the paths of the optional tool runtime project.json and lockfile.
32   -->
33   <Target Name="GetOptionalToolingPaths">
34     <PropertyGroup>
35       <OptionalToolingDir>$(ToolsDir)optional-tool-runtime\</OptionalToolingDir>
36       <OptionalToolingJsonPath Condition="'$(OptionalToolingJsonPath)' == ''">$(OptionalToolingDir)optional.json</OptionalToolingJsonPath>
37       <OptionalToolingProjectJsonPath>$(OptionalToolingDir)project.json</OptionalToolingProjectJsonPath>
38       <OptionalToolingProjectLockJsonPath>$(OptionalToolingDir)project.lock.json</OptionalToolingProjectLockJsonPath>
39     </PropertyGroup>
40   </Target>
41
42   <!--
43     Copy the mangled "optional.json" file to "project.json", so that we can restore it. The name
44     is optional.json so that recursive restore will not normally find the file: it contains
45     optional tooling that typical recursive restores do not provide, such as the buildtools build.
46   -->
47   <Target Name="PrepareOptionalToolProjectJson"
48           DependsOnTargets="GetOptionalToolingPaths">
49
50     <Copy SourceFiles="$(OptionalToolingJsonPath)"
51           DestinationFiles="$(OptionalToolingProjectJsonPath)"
52           SkipUnchangedFiles="true" />
53   </Target>
54
55   <!--
56     Restore optional tooling using a NuGet.Config on disk with encrypted credentials inside.
57     Not supported on .NET Core.
58   -->
59   <Target Name="RestoreOptionalToolingEncrypted"
60           DependsOnTargets="CreateOptionalRestoreFeedItems;
61                             PrepareOptionalToolProjectJson"
62           Condition="'$(MSBuildRuntimeType)'!='core'">
63     <PropertyGroup>
64       <GeneratedNuGetConfigDir>$(ObjDir)generatedNuGetConfig/</GeneratedNuGetConfigDir>
65       <OptionalRestoreConfigPath>$(GeneratedNuGetConfigDir)optional.NuGet.Config</OptionalRestoreConfigPath>
66     </PropertyGroup>
67
68     <GenerateEncryptedNuGetConfig ConfigPath="$(OptionalRestoreConfigPath)"
69                                   Sources="@(OptionalRestoreSource)" />
70
71     <EncryptedConfigNuGetRestore Inputs="$(OptionalToolingProjectJsonPath)"
72                                  ConfigFile="$(OptionalRestoreConfigPath)"
73                                  PackagesDir="$(PackagesDir)" />
74   </Target>
75
76   <!--
77     Restore optional tooling by generating the XML string of a NuGet.Config with plaintext
78     credentials, then injecting it into "dotnet restore" using /dev/stdin.
79     Not supported on Windows.
80   -->
81   <Target Name="RestoreOptionalToolingUnencrypted"
82           DependsOnTargets="CreateOptionalRestoreFeedItems;
83                             PrepareOptionalToolProjectJson"
84           Condition="'$(MSBuildRuntimeType)'=='core'">
85     <PropertyGroup>
86       <!-- Create a new restore command with no source parameters, only configfile. -->
87       <OptionalRestoreCommand>"$(DnuToolPath)"</OptionalRestoreCommand>
88       <OptionalRestoreCommand>$(OptionalRestoreCommand) restore</OptionalRestoreCommand>
89       <OptionalRestoreCommand Condition="'$(UseNuGetHttpCache)'!='true'">$(OptionalRestoreCommand) --no-cache</OptionalRestoreCommand>
90       <OptionalRestoreCommand>$(OptionalRestoreCommand) --packages "$(PackagesDir.TrimEnd('/\'.ToCharArray()))"</OptionalRestoreCommand>
91       <OptionalRestoreCommand>$(OptionalRestoreCommand) --configfile $(OptionalRestoreConfigPath)</OptionalRestoreCommand>
92     </PropertyGroup>
93
94     <Error Text="Restoring optional tooling with in-memory credentials is not supported on Windows. Use the desktop framework for the encrypted credential flow."
95            Condition="'$(RunningOnUnix)'!='true'" />
96
97     <Error Text="Restoring optional tooling with in-memory credentials is not yet implemented. No cross-platform optional tooling exists yet." />
98   </Target>
99
100   <!--
101     Cleanup steps: try to ensure non-authenticated restore attempts don't attempt to restore
102     optional packages and reduce credential exposure to the remaining steps in the build.
103   -->
104   <Target Name="CleanOptionalToolingRestore"
105           Condition="'$(SkipCleanOptionalToolingRestore)'!='true'">
106     <ItemGroup>
107       <OptionalRestoreTemporaryFilePath Include="$(OptionalRestoreConfigPath);
108                                                  $(OptionalToolingProjectJsonPath)" />
109     </ItemGroup>
110
111     <Delete Files="@(OptionalRestoreTemporaryFilePath)" Condition="Exists('%(Identity)')" />
112   </Target>
113
114   <!--
115     Resolve tooling from the optional restore lockfile. Other targets can find optional tooling
116     in ResolvedOptionalToolReferences.
117   -->
118   <Target Name="ResolveOptionalTools"
119           DependsOnTargets="GetOptionalToolingPaths">
120
121     <Error Text="Optional tooling has not been restored. Use the 'RestoreOptionalToolingPackages' target first."
122            Condition="!Exists('$(OptionalToolingProjectLockJsonPath)')" />
123
124     <ItemGroup>
125       <OptionalToolingTargetMoniker Include=".NETFramework,Version=v4.5" />
126     </ItemGroup>
127
128     <PrereleaseResolveNuGetPackageAssets ProjectLockFile="$(OptionalToolingProjectLockJsonPath)"
129                                          TargetMonikers="@(OptionalToolingTargetMoniker)">
130       <Output TaskParameter="ResolvedReferences" ItemName="ResolvedOptionalToolReferences" />
131     </PrereleaseResolveNuGetPackageAssets>
132   </Target>
133
134 </Project>