Skip to content

Commit 738a032

Browse files
authored
Merge pull request #26 from TomTondeur/keynotfound
Fix for KeyNotFoundException when a package dependency does not appear in the list of libraries taken from the lock file
2 parents 0489548 + d66809f commit 738a032

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

src/Depends.Core/DependencyAnalyzer.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,20 @@ private DependencyGraph.Builder CreateBuilder(IProjectAnalyzer projectAnalyzer,
262262
{
263263
var libraryNode = library.ToNode();
264264
builder.WithNode(libraryNode);
265-
libraryNodes.Add(libraryNode.PackageId, libraryNode);
265+
266+
// Overwrite any previous additions that may have been added by the loop below.
267+
libraryNodes[libraryNode.PackageId] = libraryNode;
268+
269+
// Not all dependencies are necessarily included in the list of libraries
270+
// for the current target framework and runtime identifier. Add these to libraryNodes
271+
// so we can still record these dependencies.
272+
foreach (var dependency in library.Dependencies)
273+
{
274+
// Add min version in version range if this dependency doesn't exist
275+
libraryNodes.TryAdd(
276+
dependency.Id,
277+
new PackageReferenceNode(dependency.Id, dependency.VersionRange.MinVersion.ToString()));
278+
}
266279

267280
if (library.FrameworkAssemblies.Count > 0)
268281
{
@@ -297,6 +310,7 @@ private DependencyGraph.Builder CreateBuilder(IProjectAnalyzer projectAnalyzer,
297310
//}
298311
}
299312

313+
300314
foreach (var library in libraries)
301315
{
302316
var libraryNode = library.ToNode();

0 commit comments

Comments
 (0)