Implement RestorePackages in MSBuild.
This adds the DotNetTool custom task, with `dotnet restore` implemented.
This commit is contained in:
parent
0d37da4d0d
commit
aff23d00f4
2 changed files with 105 additions and 1 deletions
|
@ -5,12 +5,13 @@
|
||||||
<UsingTask TaskName="GenerateBuildVersionInfo" AssemblyFile="$(CLIBuildDll)" />
|
<UsingTask TaskName="GenerateBuildVersionInfo" AssemblyFile="$(CLIBuildDll)" />
|
||||||
<UsingTask TaskName="CheckPrereqs" AssemblyFile="$(CLIBuildDll)" />
|
<UsingTask TaskName="CheckPrereqs" AssemblyFile="$(CLIBuildDll)" />
|
||||||
<UsingTask TaskName="SetEnvVar" AssemblyFile="$(CLIBuildDll)" />
|
<UsingTask TaskName="SetEnvVar" AssemblyFile="$(CLIBuildDll)" />
|
||||||
|
<UsingTask TaskName="DotNetRestore" AssemblyFile="$(CLIBuildDll)" />
|
||||||
|
|
||||||
<Target DependsOnTargets="BuildDotnetCliBuildFramework" Name="Prepare">
|
<Target DependsOnTargets="BuildDotnetCliBuildFramework" Name="Prepare">
|
||||||
<PrepareTargets />
|
<PrepareTargets />
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<Target Name="Init" >
|
<Target Name="Init">
|
||||||
<!-- Current Runtime Information -->
|
<!-- Current Runtime Information -->
|
||||||
<GetCurrentRuntimeInformation>
|
<GetCurrentRuntimeInformation>
|
||||||
<Output TaskParameter="Rid" PropertyName="Rid" />
|
<Output TaskParameter="Rid" PropertyName="Rid" />
|
||||||
|
@ -20,6 +21,10 @@
|
||||||
|
|
||||||
<!-- Common Properties -->
|
<!-- Common Properties -->
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
<Stage0Path Condition=" '$(OSName)' == 'win' ">$(RepoRoot)/.dotnet_stage0/Windows/$(Architecture)</Stage0Path>
|
||||||
|
<Stage0Path Condition=" '$(OSName)' != 'win' ">$(RepoRoot)/.dotnet_stage0/$(OSName)</Stage0Path>
|
||||||
|
<DotNetPath>$(Stage0Path)</DotNetPath>
|
||||||
|
|
||||||
<BaseOutputDirectory>$(RepoRoot)/artifacts/$(Rid)</BaseOutputDirectory>
|
<BaseOutputDirectory>$(RepoRoot)/artifacts/$(Rid)</BaseOutputDirectory>
|
||||||
<OutputDirectory>$(BaseOutputDirectory)/stage2</OutputDirectory>
|
<OutputDirectory>$(BaseOutputDirectory)/stage2</OutputDirectory>
|
||||||
<Stage2CompilationDirectory>$(BaseOutputDirectory)/stage2compilation</Stage2CompilationDirectory>
|
<Stage2CompilationDirectory>$(BaseOutputDirectory)/stage2compilation</Stage2CompilationDirectory>
|
||||||
|
@ -95,4 +100,18 @@
|
||||||
<!-- SetTelemetryProfile -->
|
<!-- SetTelemetryProfile -->
|
||||||
<SetEnvVar Name="DOTNET_CLI_TELEMETRY_PROFILE" Value="https://github.com/dotnet/cli;$(CommitHash)" />
|
<SetEnvVar Name="DOTNET_CLI_TELEMETRY_PROFILE" Value="https://github.com/dotnet/cli;$(CommitHash)" />
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
|
<Target DependsOnTargets="Init" Name="RestorePackages">
|
||||||
|
|
||||||
|
<!-- Clean NuGet Temp Cache on Linux (seeing some issues on Linux) -->
|
||||||
|
<!-- TODO: do we still need this? Seems unnecessary -->
|
||||||
|
<RemoveDir
|
||||||
|
Condition=" '$(OSName)' != 'win' AND '$(OSName)' != 'osx' "
|
||||||
|
Directories="/tmp/NuGet" />
|
||||||
|
|
||||||
|
<DotNetRestore WorkingDirectory="$(RepoRoot)/src" ToolPath="$(DotNetPath)" />
|
||||||
|
<DotNetRestore WorkingDirectory="$(RepoRoot)/tools" ToolPath="$(DotNetPath)" />
|
||||||
|
|
||||||
|
</Target>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
85
build_projects/dotnet-cli-build/DotNetTool.cs
Normal file
85
build_projects/dotnet-cli-build/DotNetTool.cs
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
using Microsoft.Build.Framework;
|
||||||
|
using Microsoft.Build.Utilities;
|
||||||
|
|
||||||
|
namespace Microsoft.DotNet.Cli.Build
|
||||||
|
{
|
||||||
|
public abstract class DotNetTool : ToolTask
|
||||||
|
{
|
||||||
|
private const string ExeName = "dotnet.exe";
|
||||||
|
|
||||||
|
public DotNetTool()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract string Command { get; }
|
||||||
|
|
||||||
|
protected abstract string Args { get; }
|
||||||
|
|
||||||
|
public string WorkingDirectory { get; set; }
|
||||||
|
|
||||||
|
protected override string ToolName
|
||||||
|
{
|
||||||
|
get { return ExeName; }
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override MessageImportance StandardOutputLoggingImportance
|
||||||
|
{
|
||||||
|
get { return MessageImportance.High; } // or else the output doesn't get logged by default
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override string GenerateFullPathToTool()
|
||||||
|
{
|
||||||
|
string path = ToolPath;
|
||||||
|
|
||||||
|
// if ToolPath was not provided by the MSBuild script
|
||||||
|
if (string.IsNullOrEmpty(path))
|
||||||
|
{
|
||||||
|
Log.LogError($"Could not find the Path to {ExeName}");
|
||||||
|
|
||||||
|
return string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override string GetWorkingDirectory()
|
||||||
|
{
|
||||||
|
return WorkingDirectory ?? base.GetWorkingDirectory();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override string GenerateCommandLineCommands()
|
||||||
|
{
|
||||||
|
return $"{Command} {Args}";
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void LogToolCommand(string message)
|
||||||
|
{
|
||||||
|
base.LogToolCommand($"{GetWorkingDirectory()}> {message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class DotNetRestore : DotNetTool
|
||||||
|
{
|
||||||
|
protected override string Command
|
||||||
|
{
|
||||||
|
get { return "restore"; }
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override string Args
|
||||||
|
{
|
||||||
|
get { return $"{GetVerbosity()}"; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Verbosity { get; set; }
|
||||||
|
|
||||||
|
private string GetVerbosity()
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(Verbosity))
|
||||||
|
{
|
||||||
|
return $"--verbosity {Verbosity}";
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue