diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/GenerateDepsFile.cs b/src/Tasks/Microsoft.NET.Build.Tasks/GenerateDepsFile.cs index 549376a1f9c5..2f68ba2095df 100644 --- a/src/Tasks/Microsoft.NET.Build.Tasks/GenerateDepsFile.cs +++ b/src/Tasks/Microsoft.NET.Build.Tasks/GenerateDepsFile.cs @@ -64,7 +64,7 @@ public class GenerateDepsFile : TaskBase public ITaskItem CompilerOptions { get; set; } - public ITaskItem[] ExcludeFromPublishPackageReferences { get; set; } = Array.Empty(); + public ITaskItem[] AllPackageReferences { get; set; } = Array.Empty(); public ITaskItem[] RuntimeStorePackages { get; set; } @@ -228,13 +228,21 @@ bool ShouldIncludeRuntimeAsset(ITaskItem item) targetFramework: TargetFramework); } + Func ShouldNotBeInDepsFile = taskItem => + { + var excludedAssets = taskItem.GetMetadata("ExcludeAssets"); + var includedAssets = taskItem.GetMetadata("IncludeAssets"); + return excludedAssets?.Contains("runtime") == true || excludedAssets?.Contains("all") == true || + (!string.IsNullOrEmpty(includedAssets) && !includedAssets.Contains("runtime") && !includedAssets.Contains("all")); + }; + builder = builder .WithMainProjectInDepsFile(IncludeMainProject) .WithReferenceAssemblies(referenceAssemblyInfos) .WithDirectReferences(directReferences) .WithDependencyReferences(dependencyReferences) .WithReferenceProjectInfos(referenceProjects) - .WithExcludeFromPublishAssets(PackageReferenceConverter.GetPackageIds(ExcludeFromPublishPackageReferences)) + .WithExcludeFromPublishAssets(PackageReferenceConverter.GetPackageIds(AllPackageReferences?.Where(ShouldNotBeInDepsFile))) .WithRuntimePackAssets(runtimePackAssets) .WithCompilationOptions(compilationOptions) .WithReferenceAssembliesPath(FrameworkReferenceResolver.GetDefaultReferenceAssembliesPath()) diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/PackageReferenceConverter.cs b/src/Tasks/Microsoft.NET.Build.Tasks/PackageReferenceConverter.cs index d8049c937ac5..d74971ffa220 100644 --- a/src/Tasks/Microsoft.NET.Build.Tasks/PackageReferenceConverter.cs +++ b/src/Tasks/Microsoft.NET.Build.Tasks/PackageReferenceConverter.cs @@ -7,7 +7,7 @@ namespace Microsoft.NET.Build.Tasks { internal static class PackageReferenceConverter { - public static IEnumerable GetPackageIds(ITaskItem[] packageReferences) + public static IEnumerable GetPackageIds(IEnumerable packageReferences) { if (packageReferences == null) { diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets index eaf2b5011e62..9dacfe6e1baa 100644 --- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets +++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets @@ -1236,7 +1236,7 @@ Copyright (c) .NET Foundation. All rights reserved. PlatformLibraryName="$(MicrosoftNETPlatformLibrary)" RuntimeFrameworks="@(RuntimeFramework)" CompilerOptions="@(DependencyFileCompilerOptions)" - ExcludeFromPublishPackageReferences="@(_ExcludeFromPublishPackageReference)" + AllPackageReferences="@(PackageReference)" RuntimeStorePackages="@(RuntimeStorePackages)" CompileReferences="@(ResolvedCompileFileDefinitions)" ResolvedNuGetFiles="@(_ResolvedNuGetFilesForPublish)" diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.targets b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.targets index 5d4c747ec897..abf2c0922794 100644 --- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.targets +++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.targets @@ -338,7 +338,7 @@ Copyright (c) .NET Foundation. All rights reserved. PlatformLibraryName="$(MicrosoftNETPlatformLibrary)" RuntimeFrameworks="@(RuntimeFramework)" CompilerOptions="@(DependencyFileCompilerOptions)" - ExcludeFromPublishPackageReferences="@(_ExcludeFromPublishPackageReference)" + AllPackageReferences="@(PackageReference)" CompileReferences="@(ResolvedCompileFileDefinitions)" ResolvedNuGetFiles="@(NativeCopyLocalItems);@(ResourceCopyLocalItems);@(RuntimeCopyLocalItems)" UserRuntimeAssemblies="@(UserRuntimeAssembly)" diff --git a/test/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildADesktopLibrary.cs b/test/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildADesktopLibrary.cs index 557741e430d5..737556cff6c9 100644 --- a/test/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildADesktopLibrary.cs +++ b/test/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildADesktopLibrary.cs @@ -246,7 +246,8 @@ public void PackageReferences_with_private_assets_do_not_appear_in_deps_file(str } else { - dependencyContext.CompileLibraries.Any(l => l.Name.Equals("Microsoft.AspNetCore.App")).Should().BeFalse(); + dependencyContext.CompileLibraries.Any(l => l.Name.Equals("Microsoft.AspNetCore.App")).Should().BeTrue(); + dependencyContext.CompileLibraries.Any(l => l.Name.Equals("Microsoft.AspNetCore")).Should().BeFalse(); } } } diff --git a/test/TestAssets/TestProjects/RazorSimpleMvc22/SimpleMvc22.csproj b/test/TestAssets/TestProjects/RazorSimpleMvc22/SimpleMvc22.csproj index 9d0b31e16588..94efaae2b311 100644 --- a/test/TestAssets/TestProjects/RazorSimpleMvc22/SimpleMvc22.csproj +++ b/test/TestAssets/TestProjects/RazorSimpleMvc22/SimpleMvc22.csproj @@ -18,6 +18,7 @@ +