-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
Conversation
@@ -161,7 +168,8 @@ public DependencyContext Build() | |||
} | |||
runtimeLibraries = runtimeLibraries | |||
.Concat(GetLibraries(runtimeExports, libraryLookup, dependencyLookup, runtime: true).Cast<RuntimeLibrary>()) | |||
.Concat(GetDirectReferenceRuntimeLibraries()); | |||
.Concat(GetDirectReferenceRuntimeLibraries()) | |||
.Concat(GetDependencyReferenceRuntimeLibraries()); |
There was a problem hiding this comment.
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"); |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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": ""
}
}
}
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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)
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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'
There was a problem hiding this comment.
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) |
There was a problem hiding this comment.
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.
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); |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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()); |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
There was a problem hiding this 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.
Fixed product code feedback. |
@dotnet-bot Test Windows_NT Debug |
[InlineData("netcoreapp2.0", "netstandard2.0", "net40")] | ||
[InlineData("netcoreapp2.0", "netstandard2.0", "netstandard1.5")] | ||
[InlineData("netcoreapp2.0", "netstandard2.0", "netcoreapp1.0")] | ||
public void ItRunsAppsReferencingAProjectDirectlyReferencingAssemblies( |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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)); |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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); |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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"))); |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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....
There was a problem hiding this comment.
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. :(
There was a problem hiding this comment.
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"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Extract to MetadataKeys.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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)); |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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)); |
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
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
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed.
ConsoleApp34Project References:
Manual References:
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": ""
}
}
} ClassLibrary1Project References:
Manual References:
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": ""
}
}
} ClassLibrary2Project References:
Manual References:
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": ""
}
}
} ClassLibrary3Project References:
Manual References:
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"
}
}
} |
@eerhardt, could you give this a final review pass and sign-off. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM.
@nguerrera @tannergooding - What did we decide about |
The PR, as is, is still checking and using I talked with @livarcocc earlier today and we should be good to merge, provided we follow up on any additional discussion/feedback from @nguerrera. |
I will add back setting of NuGetSourceType. Indeed, there was a regression caused by it: #2121. Unfortunate that we had no test coverage. |
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