diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/GetPackageDirectory.cs b/src/Tasks/Microsoft.NET.Build.Tasks/GetPackageDirectory.cs index bf70649df09e..9e9a53ee4bfe 100644 --- a/src/Tasks/Microsoft.NET.Build.Tasks/GetPackageDirectory.cs +++ b/src/Tasks/Microsoft.NET.Build.Tasks/GetPackageDirectory.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.IO; +using System.Linq; using System.Text; using Microsoft.Build.Framework; using Microsoft.Build.Utilities; @@ -16,17 +17,26 @@ public class GetPackageDirectory : TaskBase public string[] PackageFolders { get; set; } = Array.Empty(); + public string AssetsFileWithAdditionalPackageFolders { get; set; } + [Output] public ITaskItem[] Output { get; set; } protected override void ExecuteCore() { - if (Items.Length == 0 || PackageFolders.Length == 0) + if (Items.Length == 0 || (PackageFolders.Length == 0 && string.IsNullOrEmpty(AssetsFileWithAdditionalPackageFolders))) { Output = Items; return; } + if (!string.IsNullOrEmpty(AssetsFileWithAdditionalPackageFolders)) + { + var lockFileCache = new LockFileCache(this); + var lockFile = lockFileCache.GetLockFile(AssetsFileWithAdditionalPackageFolders); + PackageFolders = PackageFolders.Concat(lockFile.PackageFolders.Select(p => p.Path)).ToArray(); + } + var packageResolver = NuGetPackageResolver.CreateResolver(PackageFolders); int index = 0; diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.ComposeStore.targets b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.ComposeStore.targets index c656b5fd538e..f446926e882d 100644 --- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.ComposeStore.targets +++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.ComposeStore.targets @@ -53,8 +53,7 @@ Copyright (c) .NET Foundation. All rights reserved. SkipUnchangedFiles=$(SkipUnchangedFiles); PreserveStoreLayout=$(PreserveStoreLayout); CreateProfilingSymbols=$(CreateProfilingSymbols); - StoreSymbolsStagingDir=$(StoreSymbolsStagingDir)" - ContinueOnError="WarnAndContinue"> + StoreSymbolsStagingDir=$(StoreSymbolsStagingDir)"> @@ -71,6 +70,8 @@ Copyright (c) .NET Foundation. All rights reserved. + %(PackageReference.Identity) + %(PackageReference.Version) StorePackageName=%(PackageReference.Identity); StorePackageVersion=%(PackageReference.Version); @@ -93,17 +94,15 @@ Copyright (c) .NET Foundation. All rights reserved. + BuildInParallel="$(BuildInParallel)"> + Properties="SelfContained=false;MSBuildProjectExtensionsPath=$(ComposeWorkingDir)\%(PackageReferencesToStore.PackageName)_$([System.String]::Copy('%(PackageReferencesToStore.PackageVersion)').Replace('*','-'))\;" + BuildInParallel="$(BuildInParallel)"> @@ -157,8 +156,7 @@ Copyright (c) .NET Foundation. All rights reserved. Importance="high"/> + Directories="$(ComposeWorkingDir)" /> + Condition="!Exists($([System.IO.Path]::Combine($(PublishDir),$(CrossgenSubOutputPath))))" + IgnoreStandardErrorWarningFormat="true" /> + Condition="'$(CreateProfilingSymbols)' == 'true' and Exists($(CrossgenOutputAssembly))" + IgnoreStandardErrorWarningFormat="true" /> <_ProfilingSymbols Include="$(CrossgenProfilingSymbolsOutputDirectory)\*" @@ -267,12 +269,12 @@ Copyright (c) .NET Foundation. All rights reserved. - + + + + + + + + elem.Equals(pkg), "package {0}, version {1} was not expected to be stored", pkg.Id, pkg.Version); + packagescomposed.Should().Contain(elem => elem.Equals(pkg), "package {0}, version {1} was expected to be stored", pkg.Id, pkg.Version); } } @@ -300,7 +300,7 @@ public void It_creates_profiling_symbols() } } - [CoreMSBuildOnlyFact(Skip = "https://github.com/dotnet/sdk/issues/2914")] + [CoreMSBuildOnlyFact] public void It_stores_when_targeting_netcoreapp3() { const string TFM = "netcoreapp3.0";