Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/Tasks/Common/MetadataKeys.cs
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ internal static class MetadataKeys
public const string NuGetSourceType = "NuGetSourceType";
public const string PathInPackage = "PathInPackage";
public const string PackageDirectory = "PackageDirectory";
public const string Publish = "Publish";

// References
public const string ExternallyResolved = "ExternallyResolved";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,10 @@ public string GetMetadata(string metadataName)
string metadataValue = null;
if (_metadata.TryGetValue(metadataName, out metadataValue))
{
return metadataValue;
return metadataValue ?? string.Empty;
}

return null;
return string.Empty;
}

public void RemoveMetadata(string metadataName)
Expand Down
51 changes: 0 additions & 51 deletions src/Tasks/Microsoft.NET.Build.Tasks/DependencyContextBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ internal class DependencyContextBuilder
private Dictionary<string, List<ReferenceInfo>> _compileReferences;
private Dictionary<string, List<ResolvedFile>> _resolvedNuGetFiles;
private Dictionary<string, SingleProjectInfo> _referenceProjectInfos;
private IEnumerable<string> _excludeFromPublishPackageIds;
private Dictionary<string, List<RuntimePackAssetInfo>> _runtimePackAssets;
private CompilationOptions _compilationOptions;
private string _referenceAssembliesPath;
Expand Down Expand Up @@ -160,12 +159,6 @@ public DependencyContextBuilder WithMainProjectInDepsFile(bool includeMainProjec
return this;
}

public DependencyContextBuilder WithExcludeFromPublishAssets(IEnumerable<string> excludeFromPublishPackageIds)
{
_excludeFromPublishPackageIds = excludeFromPublishPackageIds;
return this;
}

public DependencyContextBuilder WithRuntimePackAssets(IEnumerable<RuntimePackAssetInfo> runtimePackAssets)
{
_runtimePackAssets = new Dictionary<string, List<RuntimePackAssetInfo>>();
Expand Down Expand Up @@ -748,50 +741,6 @@ private void CalculateExcludedLibraries()
{
_dependencyLibraries[packageToExcludeFromRuntime].ExcludeFromRuntime = true;
}

if (_excludeFromPublishPackageIds != null && _excludeFromPublishPackageIds.Any())
{
// Include transitive dependencies of all top-level dependencies which are not
// excluded from publish

Dictionary<string, DependencyLibrary> includedDependencies = new Dictionary<string, DependencyLibrary>(StringComparer.OrdinalIgnoreCase);

HashSet<string> excludeFromPublishPackageIds = new HashSet<string>(_excludeFromPublishPackageIds);

Stack<string> dependenciesToWalk = new Stack<string>(
_mainProjectDependencies.Except(_excludeFromPublishPackageIds, StringComparer.OrdinalIgnoreCase));

while (dependenciesToWalk.Any())
{
var dependencyName = dependenciesToWalk.Pop();
if (!includedDependencies.ContainsKey(dependencyName))
{
// There may not be a library in the assets file if a referenced project has
// PrivateAssets="all" for a package reference, and there is a package in the graph
// that depends on the same packge.
if (_dependencyLibraries.TryGetValue(dependencyName, out var dependencyLibrary))
{
includedDependencies.Add(dependencyName, dependencyLibrary);
foreach (var newDependency in _libraryDependencies[dependencyName])
{
dependenciesToWalk.Push(newDependency.Name);
}
}
}
}

foreach (var dependencyLibrary in _dependencyLibraries.Values)
{
// Libraries explicitly marked as exclude from publish should be excluded from
// publish even if there are other transitive dependencies to them
if (!includedDependencies.ContainsKey(dependencyLibrary.Name) ||
excludeFromPublishPackageIds.Contains(dependencyLibrary.Name))
{
dependencyLibrary.ExcludeFromCompilation = true;
dependencyLibrary.ExcludeFromRuntime = true;
}
}
}
}

private string GetReferenceLibraryName(ReferenceInfo reference)
Expand Down
9 changes: 0 additions & 9 deletions src/Tasks/Microsoft.NET.Build.Tasks/GenerateDepsFile.cs
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@ public class GenerateDepsFile : TaskBase
[Required]
public bool IncludeMainProject { get; set; }


public ITaskItem[] ReferencePaths { get; set; } = Array.Empty<ITaskItem>();

public ITaskItem[] ReferenceDependencyPaths { get; set; } = Array.Empty<ITaskItem>();
Expand All @@ -61,15 +60,10 @@ public class GenerateDepsFile : TaskBase

public ITaskItem[] ReferenceAssemblies { get; set; } = Array.Empty<ITaskItem>();

[Required]
public ITaskItem[] FilesToSkip { get; set; }

public ITaskItem[] RuntimePackAssets { get; set; } = Array.Empty<ITaskItem>();

public ITaskItem CompilerOptions { get; set; }

public ITaskItem[] ExcludeFromPublishPackageReferences { get; set; }

public ITaskItem[] RuntimeStorePackages { get; set; }

[Required]
Expand Down Expand Up @@ -138,8 +132,6 @@ private void WriteDepsFile(string depsFilePath)
ReferenceDependencyPaths,
ReferenceSatellitePaths);

IEnumerable<string> excludeFromPublishAssets = PackageReferenceConverter.GetPackageIds(ExcludeFromPublishPackageReferences);

IEnumerable<RuntimePackAssetInfo> runtimePackAssets =
IsSelfContained ? RuntimePackAssets.Select(item => RuntimePackAssetInfo.FromItem(item)) : Enumerable.Empty<RuntimePackAssetInfo>();

Expand All @@ -159,7 +151,6 @@ private void WriteDepsFile(string depsFilePath)
.WithDirectReferences(directReferences)
.WithDependencyReferences(dependencyReferences)
.WithReferenceProjectInfos(referenceProjects)
.WithExcludeFromPublishAssets(excludeFromPublishAssets)
.WithRuntimePackAssets(runtimePackAssets)
.WithCompilationOptions(compilationOptions)
.WithReferenceAssembliesPath(FrameworkReferenceResolver.GetDefaultReferenceAssembliesPath())
Expand Down
11 changes: 8 additions & 3 deletions src/Tasks/Microsoft.NET.Build.Tasks/ProjectContext.cs
Original file line number Diff line number Diff line change
Expand Up @@ -176,14 +176,19 @@ public IEnumerable<LockFileTargetLibrary> GetCompileLibraries(IEnumerable<string
}

public IEnumerable<string> GetTopLevelDependencies()
{
return GetTopLevelDependencies(LockFile, LockFileTarget);
}

static public IEnumerable<string> GetTopLevelDependencies(LockFile lockFile, LockFileTarget lockFileTarget)
{
Dictionary<string, LockFileTargetLibrary> libraryLookup =
LockFileTarget.Libraries.ToDictionary(l => l.Name, StringComparer.OrdinalIgnoreCase);
lockFileTarget.Libraries.ToDictionary(l => l.Name, StringComparer.OrdinalIgnoreCase);

return LockFile
return lockFile
.ProjectFileDependencyGroups
.Where(dg => dg.FrameworkName == string.Empty ||
dg.FrameworkName == LockFileTarget.TargetFramework.DotNetFrameworkName)
dg.FrameworkName == lockFileTarget.TargetFramework.DotNetFrameworkName)
.SelectMany(g => g.Dependencies)
.Select(projectFileDependency =>
{
Expand Down
Loading