Skip to content

Commit

Permalink
Use assets file cache for PackageFolders
Browse files Browse the repository at this point in the history
  • Loading branch information
dsplaisted committed Jan 3, 2019
1 parent 33d5690 commit a522481
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 6 deletions.
5 changes: 5 additions & 0 deletions src/Tasks/Microsoft.NET.Build.Tasks/GetPackageDirectory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,15 @@ public class GetPackageDirectory : TaskBase
{
public ITaskItem[] Items { get; set; }

[Required]
public string ProjectAssetsFile { get; set; }

[Required]
public string ProjectPath { get; set; }

[Required]
public string [] PackageFolders { get; set; }

[Output]
public ITaskItem[] Output { get; set; }

Expand Down
8 changes: 6 additions & 2 deletions src/Tasks/Microsoft.NET.Build.Tasks/NuGetPackageResolver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -59,13 +59,17 @@ public static string NormalizeRelativePath(string relativePath)
=> relativePath.Replace('/', Path.DirectorySeparatorChar);

public static NuGetPackageResolver CreateResolver(LockFile lockFile, string projectPath)
{
return CreateResolver(lockFile.PackageFolders.Select(f => f.Path), projectPath);
}
public static NuGetPackageResolver CreateResolver(IEnumerable<string> packageFolders, string projectPath)
{
NuGetPackageResolver packageResolver;

string userPackageFolder = lockFile.PackageFolders.FirstOrDefault()?.Path;
string userPackageFolder = packageFolders.FirstOrDefault();
if (userPackageFolder != null)
{
var fallBackFolders = lockFile.PackageFolders.Skip(1).Select(f => f.Path);
var fallBackFolders = packageFolders.Skip(1);
packageResolver = new NuGetPackageResolver(userPackageFolder, fallBackFolders);
}
else
Expand Down
18 changes: 17 additions & 1 deletion src/Tasks/Microsoft.NET.Build.Tasks/ResolvePackageAssets.cs
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,12 @@ public sealed class ResolvePackageAssets : TaskBase
[Output]
public ITaskItem[] NativeLibraries { get; private set; }

/// <summary>
/// The package folders from the assets file (ie the paths under which package assets may be found)
/// </summary>
[Output]
public ITaskItem[] PackageFolders { get; set; }

/// <summary>
/// Full paths to satellite assemblies from packages.
/// </summary>
Expand Down Expand Up @@ -255,7 +261,7 @@ public sealed class ResolvePackageAssets : TaskBase
////////////////////////////////////////////////////////////////////////////////////////////////////

private const int CacheFormatSignature = ('P' << 0) | ('K' << 8) | ('G' << 16) | ('A' << 24);
private const int CacheFormatVersion = 3;
private const int CacheFormatVersion = 4;
private static readonly Encoding TextEncoding = Encoding.UTF8;
private const int SettingsHashLength = 256 / 8;
private HashAlgorithm CreateSettingsHash() => SHA256.Create();
Expand Down Expand Up @@ -284,6 +290,7 @@ private void ReadItemGroups()
ContentFilesToPreprocess = reader.ReadItemGroup();
FrameworkAssemblies = reader.ReadItemGroup();
NativeLibraries = reader.ReadItemGroup();
PackageFolders = reader.ReadItemGroup();
ResourceAssemblies = reader.ReadItemGroup();
RuntimeAssemblies = reader.ReadItemGroup();
RuntimeTargets = reader.ReadItemGroup();
Expand Down Expand Up @@ -677,6 +684,7 @@ private void WriteItemGroups()
WriteItemGroup(WriteContentFilesToPreprocess);
WriteItemGroup(WriteFrameworkAssemblies);
WriteItemGroup(WriteNativeLibraries);
WriteItemGroup(WritePackageFolders);
WriteItemGroup(WriteResourceAssemblies);
WriteItemGroup(WriteRuntimeAssemblies);
WriteItemGroup(WriteRuntimeTargets);
Expand Down Expand Up @@ -985,6 +993,14 @@ private void WriteApphostsForShimRuntimeIdentifiers()
}
}

private void WritePackageFolders()
{
foreach (var packageFolder in _lockFile.PackageFolders)
{
WriteItem(packageFolder.Path);
}
}

private void WriteResourceAssemblies()
{
WriteItems(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,13 @@ Copyright (c) .NET Foundation. All rights reserved.

<UsingTask TaskName="GetPackageDirectory" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />

<Target Name="ResolveTargetingPacks">
<Target Name="ResolveTargetingPacks" DependsOnTargets="ResolvePackageAssets">

<GetPackageDirectory
Items="@(TargetingPack)"
ProjectAssetsFile="$(ProjectAssetsFile)"
ProjectPath="$(MSBuildProjectFullPath)">
ProjectPath="$(MSBuildProjectFullPath)"
PackageFolders="@(AssetFilePackageFolder)">

<Output TaskParameter="Output" ItemName="ResolvedTargetingPack" />

Expand Down Expand Up @@ -53,7 +54,8 @@ Copyright (c) .NET Foundation. All rights reserved.
<GetPackageDirectory
Items="@(AppHostPack)"
ProjectAssetsFile="$(ProjectAssetsFile)"
ProjectPath="$(MSBuildProjectFullPath)">
ProjectPath="$(MSBuildProjectFullPath)"
PackageFolders="@(AssetFilePackageFolder)">

<Output TaskParameter="Output" ItemName="ResolvedAppHostPack" />

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -264,6 +264,7 @@ Copyright (c) .NET Foundation. All rights reserved.
<Output TaskParameter="RuntimeTargets" ItemName="RuntimeTargetsCopyLocalItems" />
<Output TaskParameter="CompileTimeAssemblies" ItemName="ResolvedCompileFileDefinitions" />
<Output TaskParameter="TransitiveProjectReferences" ItemName="_TransitiveProjectReferences" />
<Output TaskParameter="PackageFolders" ItemName="AssetFilePackageFolder" />
</ResolvePackageAssets>

<ItemGroup Condition="'$(UseAppHostFromAssetsFile)' == 'true'">
Expand Down

0 comments on commit a522481

Please sign in to comment.