Skip to content

Commit f97c9e7

Browse files
author
dotnet-automerge-bot
authored
Merge pull request #3184 from dotnet/merges/release/3.0.1xx-to-master
Merge release/3.0.1xx to master
2 parents 90e8a52 + 2ee6386 commit f97c9e7

File tree

2 files changed

+42
-3
lines changed

2 files changed

+42
-3
lines changed

src/Tasks/Microsoft.NET.Build.Tasks/DependencyContextBuilder2.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -766,10 +766,16 @@ private void CalculateExcludedLibraries()
766766
var dependencyName = dependenciesToWalk.Pop();
767767
if (!includedDependencies.ContainsKey(dependencyName))
768768
{
769-
includedDependencies.Add(dependencyName, _dependencyLibraries[dependencyName]);
770-
foreach (var newDependency in _libraryDependencies[dependencyName])
769+
// There may not be a library in the assets file if a referenced project has
770+
// PrivateAssets="all" for a package reference, and there is a package in the graph
771+
// that depends on the same packge.
772+
if (_dependencyLibraries.TryGetValue(dependencyName, out var dependencyLibrary))
771773
{
772-
dependenciesToWalk.Push(newDependency.Name);
774+
includedDependencies.Add(dependencyName, dependencyLibrary);
775+
foreach (var newDependency in _libraryDependencies[dependencyName])
776+
{
777+
dependenciesToWalk.Push(newDependency.Name);
778+
}
773779
}
774780
}
775781
}

src/Tests/Microsoft.NET.Publish.Tests/GivenThatWeWantToExcludeAPackageFromPublish.cs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
using System.Xml.Linq;
1313
using Xunit.Abstractions;
1414
using System.Collections.Generic;
15+
using Microsoft.NET.TestFramework.ProjectConstruction;
1516

1617
namespace Microsoft.NET.Publish.Tests
1718
{
@@ -166,5 +167,37 @@ public void It_publishes_a_PackageReference_with_PrivateAssets_All_and_Publish_t
166167

167168
publishDirectory.Should().OnlyHaveFiles(expectedFiles);
168169
}
170+
171+
[Fact]
172+
public void TransitiveNetStandardPackageReferenceAndPublishFalse()
173+
{
174+
var testLibraryProject = new TestProject()
175+
{
176+
Name = "TestLibrary",
177+
IsSdkProject = true,
178+
TargetFrameworks = "netstandard2.0"
179+
};
180+
181+
testLibraryProject.PackageReferences.Add(new TestPackageReference("WindowsAzure.Storage", "9.3.3"));
182+
183+
var testProject = new TestProject()
184+
{
185+
Name = "TestApp",
186+
IsSdkProject = true,
187+
IsExe = true,
188+
TargetFrameworks = "netcoreapp3.0"
189+
};
190+
191+
testProject.PackageReferences.Add(new TestPackageReference("Newtonsoft.Json", "12.0.2", privateAssets: "all"));
192+
193+
testProject.ReferencedProjects.Add(testLibraryProject);
194+
195+
var testAsset = _testAssetsManager.CreateTestProject(testProject)
196+
.Restore(Log, testProject.Name);
197+
198+
var publishCommand = new PublishCommand(Log, Path.Combine(testAsset.TestRoot, testProject.Name));
199+
200+
publishCommand.Execute().Should().Pass();
201+
}
169202
}
170203
}

0 commit comments

Comments
 (0)