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

[PackageReference] Enable repeatable build using project lock file #7139

Closed
jainaashish opened this issue Jul 23, 2018 · 6 comments
Closed

Comments

@jainaashish
Copy link
Contributor

jainaashish commented Jul 23, 2018

This is the tracking issue for implementation of enabling repeatable builds for PackageReference using project lock file.

Spec - https://github.com/NuGet/Home/wiki/Enable-repeatable-package-restore-using-lock-file
Tech Spec - https://github.com/NuGet/Home/wiki/Repeatable-build-using-lock-file-implementation

@StingyJack
Copy link
Contributor

That tech spec link is a 404. Is that intentional?

@jainaashish
Copy link
Contributor Author

It was still in PR which is why not available outside. But I've merged it now so you should be able to view.

@bording
Copy link

bording commented Jul 30, 2018

@jainaashish NuGet/Engineering is not a public repo.

@jainaashish
Copy link
Contributor Author

jainaashish commented Jul 30, 2018

ahh didn't realize it.

@StingyJack
Copy link
Contributor

If this is used to configure the restore operation, why would this be a "lock" file and not a "config" file? "Lock" is not going to make as much sense to users.

Perception - The lock file should not be mistaken for a MSBuild props file that users can modify and check in.

That perception part is worded/reads poorly. The lock/config file is something that users need to see and be able to modify and checkin if repeatable restore are needed. Why not just add an in the project file for this instead of a separate file?

The way the "dependencies" element continually nests, as well as the way the sample file is organized is too messy and complicated to be used as the actual lock file. Its probably a good mechanism for informing the user of the dependency graph, but not as good as a more concise arrangement or diagram. As a user, I dont want to have to read through or have to update the dependency versions in multiple places just to fix a package at a specific version, because that is a maintenance pain. (packages.config was already kind of a pain when trying to cap versions since nuget did not emit the allowedVersion attributes by default, and there is apparently no way to cap versions for a solution).

The consuming application just needs to be able to specify the packages it is going to compile against/with, so the lock file ought to be organized from that point of view. Specifying versions for dependencies of the application's direct references seems irrelevant except for assembly binding redirects.

Sorry for dumping if this was not actually open for comment, but my first impression was "why not just bring back packages.config if this is supposed to do what that already did?" (possibly with a new section for package ref so as not to confuse existing usages). Json is a terrible format for a config file because it does not permit comments, and being able to describe the configuration possibilities or why a specific value was chosen are very important for maintaining an application.

@rrelyea rrelyea added this to the 4.9 milestone Sep 7, 2018
@jainaashish
Copy link
Contributor Author

PR# NuGet/NuGet.Client#2342 merged into release-4.9.0-preview3 branch

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

No branches or pull requests

4 participants