From efb5215246a6b43cb786b0d923b48e94245fad64 Mon Sep 17 00:00:00 2001 From: Sarah Oslund Date: Wed, 29 Apr 2020 10:23:22 -0700 Subject: [PATCH] Adding PrivateAssets=All for automatic ref assemblies reference --- ...T.Sdk.FrameworkReferenceResolution.targets | 2 +- .../targets/Microsoft.NET.Sdk.props | 2 +- ...tWeWantAutomaticTargetingPackReferences.cs | 42 +++++++++++++++++++ 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.FrameworkReferenceResolution.targets b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.FrameworkReferenceResolution.targets index cca9e91baa7a..fe2f507440b7 100644 --- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.FrameworkReferenceResolution.targets +++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.FrameworkReferenceResolution.targets @@ -338,7 +338,7 @@ Copyright (c) .NET Foundation. All rights reserved. <_ExistingReferenceAssembliesPackageReference Include="@(PackageReference)" Condition="'%(PackageReference.Identity)' == 'Microsoft.NETFramework.ReferenceAssemblies'"/> - diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.props b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.props index e4a557f82ab0..d4587122664c 100644 --- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.props +++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.props @@ -100,7 +100,7 @@ Copyright (c) .NET Foundation. All rights reserved. false false false - true + true 1.0.0 diff --git a/src/Tests/Microsoft.NET.Restore.Tests/GivenThatWeWantAutomaticTargetingPackReferences.cs b/src/Tests/Microsoft.NET.Restore.Tests/GivenThatWeWantAutomaticTargetingPackReferences.cs index 56e584b3e7ae..c192bf219ea2 100644 --- a/src/Tests/Microsoft.NET.Restore.Tests/GivenThatWeWantAutomaticTargetingPackReferences.cs +++ b/src/Tests/Microsoft.NET.Restore.Tests/GivenThatWeWantAutomaticTargetingPackReferences.cs @@ -5,6 +5,7 @@ using Microsoft.Build.Utilities; using Microsoft.NET.TestFramework; using Microsoft.NET.TestFramework.Assertions; +using Microsoft.NET.TestFramework.Commands; using Microsoft.NET.TestFramework.ProjectConstruction; using NuGet.Common; using NuGet.Frameworks; @@ -181,5 +182,46 @@ public void It_restores_net_framework_project_with_existing_references() netFrameworkLibrary.Type.Should().Be("package"); netFrameworkLibrary.Version.ToFullString().Should().Be("1.0.0"); } + + [Fact] + public void It_fails_without_assembly_pack_reference() + { + var targetFramework = "net472"; + var testProject = new TestProject() + { + Name = "ProjectWithoutTargetingPackRef", + TargetFrameworks = targetFramework, + IsSdkProject = true, + }; + testProject.AdditionalProperties["AutomaticallyUseReferenceAssemblyPackages"] = "false"; + + var testAsset = _testAssetsManager.CreateTestProject(testProject); + + var buildCommand = new BuildCommand(Log, Path.Combine(testAsset.TestRoot, testProject.Name)); + if (TestProject.ReferenceAssembliesAreInstalled(TargetDotNetFrameworkVersion.Version472)) + { + buildCommand.Execute() + .Should() + .Pass(); + + string projectAssetsJsonPath = Path.Combine( + testAsset.Path, + testProject.Name, + "obj", + "project.assets.json"); + LockFile lockFile = LockFileUtilities.GetLockFile( + projectAssetsJsonPath, + NullLogger.Instance); + lockFile.GetTarget(NuGetFramework.Parse(".NETFramework,Version=v4.7.2"), null).Libraries.FirstOrDefault((file) => file.Name.Contains("net472")) + .Should() + .BeNull(); + } + else + { + buildCommand.Execute() + .Should() + .Fail(); + } + } } }