I am a Java developer used to Maven and Gradle, now coming into .NET and trying to understand Paket. From my understanding, Paket has three different files supporting a .NET solution's dependency management:
- a root paket.dependencies file where you list your direct dependencies and versions.
- a project specific paket.references file where you list a subset of the dependencies that you've already listed in paket.dependencies.
- a paket.lock auto-generated file that lists all direct and transitive dependencies along with their versions.
With Maven and Gradle, I am used to specifying my dependencies in one file. I can specify exact versions, and be sure that subsequent downloads of the dependencies will be the same. Why does Paket need three files? I would expect that a paket.references file in each project would be sufficient. Is there some problem or quirk in .NET world in how dependencies are managed that I am ignorant of that this three files are needed?