diff --git a/build/repo.targets b/build/repo.targets index 3860311efd..56bf713359 100644 --- a/build/repo.targets +++ b/build/repo.targets @@ -179,7 +179,7 @@ SourceName="Artifacts" Condition="%(Repository.Build)" SourceUri="$(BuildDir)" /> - + a.RepoName.Equals(repoName, StringComparison.OrdinalIgnoreCase)).ToList(); + var packages = artifacts + .Where(a => a.RepoName.Equals(repoName, StringComparison.OrdinalIgnoreCase)) + .ToDictionary(p => p.PackageInfo.Id, p => p, StringComparer.OrdinalIgnoreCase); foreach (var proj in s.Projects) { - var projectGroup = packages.Any(p => p.PackageInfo.Id == proj.PackageId) - ? repo.Projects - : repo.SupportProjects; + IList projectGroup; + if (packages.ContainsKey(proj.PackageId)) + { + // this project is a package producer and consumer + packages.Remove(proj.PackageId); + projectGroup = repo.Projects; + } + else + { + // this project is a package consumer + projectGroup = repo.SupportProjects; + } + projectGroup.Add(new Project(proj.PackageId) { @@ -211,6 +223,12 @@ namespace RepoTasks }); } + foreach (var packageId in packages.Keys) + { + // these packages are produced from something besides a csproj. e.g. .Sources packages + repo.Projects.Add(new Project(packageId) { Repository = repo }); + } + return repo; }).ToList();