Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updating GenerateDepsFile so that direct references of referenced projects appear in the deps.json #2090

Merged
merged 5 commits into from
Apr 10, 2018

Conversation

tannergooding
Copy link
Member

FYI. @dotnet/dotnet-cli, @eerhardt

Only tested locally so far, will be adding tests shortly. Putting this up for early feedback (in case I did something obviously wrong).

This resolves #2041 and #1609

@@ -161,7 +168,8 @@ public DependencyContext Build()
}
runtimeLibraries = runtimeLibraries
.Concat(GetLibraries(runtimeExports, libraryLookup, dependencyLookup, runtime: true).Cast<RuntimeLibrary>())
.Concat(GetDirectReferenceRuntimeLibraries());
.Concat(GetDirectReferenceRuntimeLibraries())
.Concat(GetDependencyReferenceRuntimeLibraries());
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This causes the "library" section to be populated properly.


private IEnumerable<RuntimeLibrary> GetDependencyReferenceRuntimeLibraries()
{
return GetReferenceRuntimeLibraries(_dependencyReferences, "projectReference");
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure if calling this "projectReference" is ok., but it allows the user to disambiguate a direct reference from an indirect reference.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where does that show up?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

{
  "runtimeTarget": {
    "name": ".NETCoreApp,Version=v2.0",
    "signature": "41fbaae64145566d43875d212a202eacef28ceea"
  },
  "compilationOptions": {},
  "targets": {
    ".NETCoreApp,Version=v2.0": {
      "ConsoleApp34/1.0.0": {
        "dependencies": {
          "ClassLibrary1": "1.0.0"
        },
        "runtime": {
          "ConsoleApp34.dll": {}
        }
      },
      "System.Runtime.CompilerServices.Unsafe/4.4.0": {
        "runtime": {
          "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": {}
        }
      },
      "ClassLibrary1/1.0.0": {
        "dependencies": {
          "System.Runtime.CompilerServices.Unsafe": "4.4.0",
          "ClassLibrary2": "1.0.0.0"
        },
        "runtime": {
          "ClassLibrary1.dll": {}
        }
      },
      "ClassLibrary2.Reference/1.0.0.0": {
        "runtime": {
          "ClassLibrary2.dll": {}
        }
      }
    }
  },
  "libraries": {
    "ConsoleApp34/1.0.0": {
      "type": "project",
      "serviceable": false,
      "sha512": ""
    },
    "System.Runtime.CompilerServices.Unsafe/4.4.0": {
      "type": "package",
      "serviceable": true,
      "sha512": "sha512-9dLLuBxr5GNmOfl2jSMcsHuteEg32BEfUotmmUkmZjpR3RpVHE8YQwt0ow3p6prwA1ME8WqDVZqrr8z6H8G+Kw==",
      "path": "system.runtime.compilerservices.unsafe/4.4.0",
      "hashPath": "system.runtime.compilerservices.unsafe.4.4.0.nupkg.sha512"
    },
    "ClassLibrary1/1.0.0": {
      "type": "project",
      "serviceable": false,
      "sha512": ""
    },
    "ClassLibrary2.Reference/1.0.0.0": {
      "type": "projectReference",
      "serviceable": false,
      "sha512": ""
    }
  }
}

Copy link
Contributor

@nguerrera nguerrera Mar 27, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we can just invent a name to go there.

And there's not always a project involved, right? What about just single project with <Reference Include="A.dll"> and A depends on B.dll sitting next to it?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

package is currently used for all package references (direct or indirect)
project is currently used for all project references
reference is currently used for direct references

I can either have indirect references labeled as reference or something else. I had picked projectReference since that is what the MSBuild metadata labels it as.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we handle that case?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, that is the case I explained here: #2090 (comment)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Huh, that has a ProjectReference in it. I am talking about no project references involved at all, but indirect binary reference.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed to just be 'reference'

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Talked to @nguerrera in person. He was asking about the deps.json for a project that had a direct reference to a dll, which in turn had a dependency (basically what the deps.json for ClassLibrary1 would look like for #2090 (comment)).

In that case, ClassLibrary3 shows up in the ReferenceDependencyPaths but with ReferenceSourceTarget=ResolveAssemblyReference (where-as it shows up as ReferenceSourceTarget=ProjectReference in ConsoleApp34).

I've updated the logic to not filter the ReferenceDependencyPaths nodes by ReferenceSourceTarget to account for this.

@@ -379,6 +388,14 @@ private static string GenerateRuntimeSignature(IEnumerable<LockFileTargetLibrary
else if (export.IsProject())
{
referenceProjectInfo = GetProjectInfo(library);

foreach (var dependencyReference in referenceProjectInfo.DependencyReferences)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This allows the references to be listed as dependencies of the containing project, rather than as direct dependencies of the current project.

@nguerrera
Copy link
Contributor

We'll need to make sure to test this end-to-end with PreserveCompilationContext / razor.


IEnumerable<ReferenceInfo> referenceAssemblyInfos =
ReferenceInfo.CreateReferenceInfos(ReferenceAssemblies);

IEnumerable<ReferenceInfo> directReferences =
ReferenceInfo.CreateDirectReferenceInfos(ReferencePaths, ReferenceSatellitePaths);

IEnumerable<ReferenceInfo> dependencyReferences =
ReferenceInfo.CreateDependencyReferenceInfos(ReferenceDependencyPaths, ReferenceSatellitePaths);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does the satellite information for these ReferenceDependencyPaths come through ReferenceSatellitePaths? It would be good to test this.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. The ReferenceDependencyPaths satellites come through ReferenceSatellitePaths.

Under the current code, the satellites are being adding to the project reference resources and the actual reference resources, so I'll need to fix up the logic slightly:

"ClassLibrary1/1.0.0": {
  "dependencies": {
    "System.Runtime.CompilerServices.Unsafe": "4.4.0",
    "ClassLibrary2": "1.0.0.0",
    "ClassLibrary3": "1.0.0.0"
  },
  "runtime": {
    "ClassLibrary1.dll": {}
  },
  "resources": {
    "de-DE/ClassLibrary2.resources.dll": {
      "locale": "de-DE"
    },
    "de-DE/ClassLibrary3.resources.dll": {
      "locale": "de-DE"
    }
  }
},
"ClassLibrary2.Reference/1.0.0.0": {
  "runtime": {
    "ClassLibrary2.dll": {}
  },
  "resources": {
    "de-DE/ClassLibrary2.resources.dll": {
      "locale": "de-DE"
    }
  }
},
"ClassLibrary3.Reference/1.0.0.0": {
  "runtime": {
    "ClassLibrary3.dll": {}
  },
  "resources": {
    "de-DE/ClassLibrary3.resources.dll": {
      "locale": "de-DE"
    }
  }
}

@@ -181,7 +189,8 @@ public DependencyContext Build()
compilationLibraries = compilationLibraries
.Concat(GetReferenceAssemblyLibraries())
.Concat(GetLibraries(compilationExports, libraryLookup, dependencyLookup, runtime: false).Cast<CompilationLibrary>())
.Concat(GetDirectReferenceCompilationLibraries());
.Concat(GetDirectReferenceCompilationLibraries())
.Concat(GetDependencyReferenceCompilationLibraries());
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought you mentioned that these don't show up as references to the compiler. If they don't show up as references to the compiler, then I don't think they should show up as compilationLibraries here either.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right. I'll fix this up.

Copy link
Member

@eerhardt eerhardt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like a reasonable start. Just some questions.

@tannergooding
Copy link
Member Author

Fixed product code feedback.
Added some basic tests ensuring direct references are transitive.
Probably still need to add some basic tests cover direct references with satellite assemblies.

@wli3
Copy link

wli3 commented Mar 30, 2018

test on mac is fine

screen shot 2018-03-30 at 12 22 53 pm

@livarcocc
Copy link
Contributor

@dotnet-bot Test Windows_NT Debug

@livarcocc livarcocc added this to the 2.1.3xx milestone Mar 30, 2018
[InlineData("netcoreapp2.0", "netstandard2.0", "net40")]
[InlineData("netcoreapp2.0", "netstandard2.0", "netstandard1.5")]
[InlineData("netcoreapp2.0", "netstandard2.0", "netcoreapp1.0")]
public void ItRunsAppsReferencingAProjectDirectlyReferencingAssemblies(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like both tests have a ProjectReference between app and dll references. I think we should have a test with no ProjectReferences but with indirect dll deployed via Reference. I think that because discussing that change led to fixes in the product code. Somebody might reintroduce the same wrong assumption without test coverage about what metadata to expect.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.

projectReferences.Add(
sourceProjectFile,
new SingleProjectInfo(sourceProjectFile, name, version, outputName, resourceAssemblies));
new SingleProjectInfo(sourceProjectFile, name, version, outputName, null, null));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: use named arguments for null literals.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.

@@ -44,11 +51,12 @@ public static SingleProjectInfo Create(string projectPath, string name, string f
}

string outputName = name + fileExtension;
return new SingleProjectInfo(projectPath, name, version, outputName, resourceAssemblies);
return new SingleProjectInfo(projectPath, name, version, outputName, null, resourceAssemblies);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: use named arguments for null literals

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.

{
IEnumerable<ITaskItem> indirectReferencePaths = referenceDependencyPaths
.Where(r => r.HasMetadataValue("CopyLocal", "true") &&
string.IsNullOrEmpty(r.GetMetadata("NuGetSourceType")));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see NuGetSourceType around elsewhere, but I don't know what it's testing for. I think we may no longer be setting this anywhere.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It can probably be removed in a later PR, along with all the other uses, if it isn't actually needed anymore.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NuGetSourceType was how you tested whether a Reference came from a NuGet package or not.

If we removed this metadata, I'm not sure how things are working....

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did remove it along with a bunch of redundant goop that was filling the log file. Now I don't know how tests are passing, but something has probably regressed. :(

Copy link
Contributor

@nguerrera nguerrera Apr 10, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is a regression: #2121

Unfortunate that we had no test coverage. I will add NuGetSourceType back

ResourceAssemblyInfo resourceAssemblyInfo =
ResourceAssemblyInfo.CreateFromReferenceSatellitePath(projectReferenceSatellitePath);
referenceProjectInfo._resourceAssemblies.Add(resourceAssemblyInfo);
string originalItemSpec = projectReferenceSatellitePath.GetMetadata("OriginalItemSpec");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Extract to MetadataKeys.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure what you are asking for here.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ah, I see, there is a static class which contains constants for these strings.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.


if (referenceInfo is null)
{
// We only want to add the reference satellite path if it isn't already covered by a dependency
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we have test coverage for this satellite path change?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, looks like I forgot to push those, let me see if I still have them locally.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.

}

IEnumerable<ITaskItem> projectReferenceDependencyPaths = referenceDependencyPaths
.Where(r => string.Equals(r.GetMetadata("ReferenceSourceTarget"), "ProjectReference", StringComparison.OrdinalIgnoreCase));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use MetadataKeys for all GetMetadata, won't comment again.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.


if (referenceInfo is null)
{
// We only want to add the reference satellite path if it isn't already covered by a dependency
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If it's already covered by dependency, will we have set locale?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure what you are asking here.


if (!string.IsNullOrEmpty(originalItemSpec))
{
ReferenceInfo referenceInfo = referenceProjectInfo._dependencyReferences.SingleOrDefault(r => r.FullPath.Equals(originalItemSpec));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm concerned about the perf of doing N linear searches through M items here.

if (runtime)
{
// DependencyReferences do not get passed to the compilation, so we should only
// process them will getting the runtime libraries.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(nit) wording - process them will getting. will => when.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.

@tannergooding
Copy link
Member Author

ConsoleApp34

Project References:

  • ClassLibary1

Manual References:

  • None
Click to expand deps.json

{
  "runtimeTarget": {
    "name": ".NETCoreApp,Version=v2.0",
    "signature": "41fbaae64145566d43875d212a202eacef28ceea"
  },
  "compilationOptions": {},
  "targets": {
    ".NETCoreApp,Version=v2.0": {
      "ConsoleApp34/1.0.0": {
        "dependencies": {
          "ClassLibrary1": "1.0.0"
        },
        "runtime": {
          "ConsoleApp34.dll": {}
        }
      },
      "System.Runtime.CompilerServices.Unsafe/4.4.0": {
        "runtime": {
          "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": {}
        }
      },
      "ClassLibrary1/1.0.0": {
        "dependencies": {
          "System.Runtime.CompilerServices.Unsafe": "4.4.0",
          "ClassLibrary2": "1.0.0.0",
          "ClassLibrary3": "1.0.0.0"
        },
        "runtime": {
          "ClassLibrary1.dll": {}
        }
      },
      "ClassLibrary2.Reference/1.0.0.0": {
        "runtime": {
          "ClassLibrary2.dll": {}
        },
        "resources": {
          "de-DE/ClassLibrary2.resources.dll": {
            "locale": "de-DE"
          }
        }
      },
      "ClassLibrary3.Reference/1.0.0.0": {
        "runtime": {
          "ClassLibrary3.dll": {}
        },
        "resources": {
          "de-DE/ClassLibrary3.resources.dll": {
            "locale": "de-DE"
          }
        }
      }
    }
  },
  "libraries": {
    "ConsoleApp34/1.0.0": {
      "type": "project",
      "serviceable": false,
      "sha512": ""
    },
    "System.Runtime.CompilerServices.Unsafe/4.4.0": {
      "type": "package",
      "serviceable": true,
      "sha512": "sha512-9dLLuBxr5GNmOfl2jSMcsHuteEg32BEfUotmmUkmZjpR3RpVHE8YQwt0ow3p6prwA1ME8WqDVZqrr8z6H8G+Kw==",
      "path": "system.runtime.compilerservices.unsafe/4.4.0",
      "hashPath": "system.runtime.compilerservices.unsafe.4.4.0.nupkg.sha512"
    },
    "ClassLibrary1/1.0.0": {
      "type": "project",
      "serviceable": false,
      "sha512": ""
    },
    "ClassLibrary2.Reference/1.0.0.0": {
      "type": "reference",
      "serviceable": false,
      "sha512": ""
    },
    "ClassLibrary3.Reference/1.0.0.0": {
      "type": "reference",
      "serviceable": false,
      "sha512": ""
    }
  }
}

ClassLibrary1

Project References:

  • None

Manual References:

  • ClassLibrary2
click to expand deps.json

{
  "runtimeTarget": {
    "name": ".NETStandard,Version=v2.0/",
    "signature": "c8808e232bbbb90bf3dda68c73708251d506f2ca"
  },
  "compilationOptions": {},
  "targets": {
    ".NETStandard,Version=v2.0": {},
    ".NETStandard,Version=v2.0/": {
      "ClassLibrary1/1.0.0": {
        "dependencies": {
          "NETStandard.Library": "2.0.1",
          "System.Runtime.CompilerServices.Unsafe": "4.4.0",
          "ClassLibrary2": "1.0.0.0"
        },
        "runtime": {
          "ClassLibrary1.dll": {}
        }
      },
      "Microsoft.NETCore.Platforms/1.1.0": {},
      "NETStandard.Library/2.0.1": {
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0"
        }
      },
      "System.Runtime.CompilerServices.Unsafe/4.4.0": {
        "runtime": {
          "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": {}
        }
      },
      "ClassLibrary2/1.0.0.0": {
        "runtime": {
          "ClassLibrary2.dll": {}
        },
        "resources": {
          "de-DE/ClassLibrary2.resources.dll": {
            "locale": "de-DE"
          }
        }
      },
      "ClassLibrary3/1.0.0.0": {
        "runtime": {
          "ClassLibrary3.dll": {}
        },
        "resources": {
          "de-DE/ClassLibrary3.resources.dll": {
            "locale": "de-DE"
          }
        }
      }
    }
  },
  "libraries": {
    "ClassLibrary1/1.0.0": {
      "type": "project",
      "serviceable": false,
      "sha512": ""
    },
    "Microsoft.NETCore.Platforms/1.1.0": {
      "type": "package",
      "serviceable": true,
      "sha512": "sha512-kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==",
      "path": "microsoft.netcore.platforms/1.1.0",
      "hashPath": "microsoft.netcore.platforms.1.1.0.nupkg.sha512"
    },
    "NETStandard.Library/2.0.1": {
      "type": "package",
      "serviceable": true,
      "sha512": "sha512-oA6nwv9MhEKYvLpjZ0ggSpb1g4CQViDVQjLUcDWg598jtvJbpfeP2reqwI1GLW2TbxC/Ml7xL6BBR1HmKPXlTg==",
      "path": "netstandard.library/2.0.1",
      "hashPath": "netstandard.library.2.0.1.nupkg.sha512"
    },
    "System.Runtime.CompilerServices.Unsafe/4.4.0": {
      "type": "package",
      "serviceable": true,
      "sha512": "sha512-9dLLuBxr5GNmOfl2jSMcsHuteEg32BEfUotmmUkmZjpR3RpVHE8YQwt0ow3p6prwA1ME8WqDVZqrr8z6H8G+Kw==",
      "path": "system.runtime.compilerservices.unsafe/4.4.0",
      "hashPath": "system.runtime.compilerservices.unsafe.4.4.0.nupkg.sha512"
    },
    "ClassLibrary2/1.0.0.0": {
      "type": "reference",
      "serviceable": false,
      "sha512": ""
    },
    "ClassLibrary3/1.0.0.0": {
      "type": "reference",
      "serviceable": false,
      "sha512": ""
    }
  }
}

ClassLibrary2

Project References:

  • ClassLibrary3

Manual References:

  • None
click to expand deps.json

{
  "runtimeTarget": {
    "name": ".NETStandard,Version=v2.0/",
    "signature": "2468f8819b4e290b1a8667020137de51bd83af19"
  },
  "compilationOptions": {},
  "targets": {
    ".NETStandard,Version=v2.0": {},
    ".NETStandard,Version=v2.0/": {
      "ClassLibrary2/1.0.0": {
        "dependencies": {
          "ClassLibrary3": "1.0.0",
          "NETStandard.Library": "2.0.1"
        },
        "runtime": {
          "ClassLibrary2.dll": {}
        },
        "resources": {
          "de-DE/ClassLibrary2.resources.dll": {
            "locale": "de-DE"
          }
        }
      },
      "Microsoft.NETCore.Platforms/1.1.0": {},
      "NETStandard.Library/2.0.1": {
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0"
        }
      },
      "ClassLibrary3/1.0.0": {
        "runtime": {
          "ClassLibrary3.dll": {}
        },
        "resources": {
          "de-DE/ClassLibrary3.resources.dll": {
            "locale": "de-DE"
          }
        }
      }
    }
  },
  "libraries": {
    "ClassLibrary2/1.0.0": {
      "type": "project",
      "serviceable": false,
      "sha512": ""
    },
    "Microsoft.NETCore.Platforms/1.1.0": {
      "type": "package",
      "serviceable": true,
      "sha512": "sha512-kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==",
      "path": "microsoft.netcore.platforms/1.1.0",
      "hashPath": "microsoft.netcore.platforms.1.1.0.nupkg.sha512"
    },
    "NETStandard.Library/2.0.1": {
      "type": "package",
      "serviceable": true,
      "sha512": "sha512-oA6nwv9MhEKYvLpjZ0ggSpb1g4CQViDVQjLUcDWg598jtvJbpfeP2reqwI1GLW2TbxC/Ml7xL6BBR1HmKPXlTg==",
      "path": "netstandard.library/2.0.1",
      "hashPath": "netstandard.library.2.0.1.nupkg.sha512"
    },
    "ClassLibrary3/1.0.0": {
      "type": "project",
      "serviceable": false,
      "sha512": ""
    }
  }
}

ClassLibrary3

Project References:

  • None

Manual References:

  • None
click to expand deps.json

{
  "runtimeTarget": {
    "name": ".NETStandard,Version=v2.0/",
    "signature": "2468f8819b4e290b1a8667020137de51bd83af19"
  },
  "compilationOptions": {},
  "targets": {
    ".NETStandard,Version=v2.0": {},
    ".NETStandard,Version=v2.0/": {
      "ClassLibrary3/1.0.0": {
        "dependencies": {
          "NETStandard.Library": "2.0.1"
        },
        "runtime": {
          "ClassLibrary3.dll": {}
        },
        "resources": {
          "de-DE/ClassLibrary3.resources.dll": {
            "locale": "de-DE"
          }
        }
      },
      "Microsoft.NETCore.Platforms/1.1.0": {},
      "NETStandard.Library/2.0.1": {
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0"
        }
      }
    }
  },
  "libraries": {
    "ClassLibrary3/1.0.0": {
      "type": "project",
      "serviceable": false,
      "sha512": ""
    },
    "Microsoft.NETCore.Platforms/1.1.0": {
      "type": "package",
      "serviceable": true,
      "sha512": "sha512-kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==",
      "path": "microsoft.netcore.platforms/1.1.0",
      "hashPath": "microsoft.netcore.platforms.1.1.0.nupkg.sha512"
    },
    "NETStandard.Library/2.0.1": {
      "type": "package",
      "serviceable": true,
      "sha512": "sha512-oA6nwv9MhEKYvLpjZ0ggSpb1g4CQViDVQjLUcDWg598jtvJbpfeP2reqwI1GLW2TbxC/Ml7xL6BBR1HmKPXlTg==",
      "path": "netstandard.library/2.0.1",
      "hashPath": "netstandard.library.2.0.1.nupkg.sha512"
    }
  }
}

@tannergooding
Copy link
Member Author

@eerhardt, could you give this a final review pass and sign-off.

Copy link
Member

@eerhardt eerhardt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

@eerhardt
Copy link
Member

eerhardt commented Apr 9, 2018

@nguerrera @tannergooding - What did we decide about NuGetSourceType?

@tannergooding
Copy link
Member Author

The PR, as is, is still checking and using NuGetSourceType (and it sounds like it should continue to do so).

I talked with @livarcocc earlier today and we should be good to merge, provided we follow up on any additional discussion/feedback from @nguerrera.

@nguerrera
Copy link
Contributor

I will add back setting of NuGetSourceType. Indeed, there was a regression caused by it: #2121. Unfortunate that we had no test coverage.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Bug when referencing out-of-solution DLL's (.NET Core only)
5 participants