Skip to content

Instantly share code, notes, and snippets.

@beccasaurus
Created May 6, 2011 16:12
Show Gist options
  • Save beccasaurus/959259 to your computer and use it in GitHub Desktop.
Save beccasaurus/959259 to your computer and use it in GitHub Desktop.
What NuGet needs for me to not want to punch it in the face

What NuGet needs for me to not want to punch it in the face

These demands MUST be met or many kittens will meet wood chippery DOOM!

  1. I must be able to install/uninstall packages into projects from the CLI (without PowerShell)
  2. I must be able to install/uninstall packages to my system, so I don't have a 20MB+ packages directory
  3. Tools included in packages that are installed to my system must automatically be added to my PATH
  4. I must be able to install a package and just get references to its DLLs without having my Web.config transformed or abunchof random content added to my project. I should have to opt-in to these extra features. It should also become standard for package developers to provide useful executables for including/managing this content, instead of using NuGet's built in features to fill my project with crap I don't want (see: Rails generators)
  5. The NuGet CLI executable must be extendable. If a user installs packages to their system that contain NuGet extensions, they should be loaded
  6. Users must be required to add <file> nodes to their Nuspec files to specify where dlls/etc should be loaded from. Giving users the ability to override this via the NuGet pack command results in poor nuspec files that nobody knows how to build, because you need to know the pack command that the author run.
  7. Instead of these bullshit install.ps1 and other PowerShell scripts, a .NET API should be made available, allowing you to create an executable or .NET assembly with hooks for Install/Uninstall/Init/etc. PowerShell scripts are often un-tested and offer no cross-platform support and they should not be used officially by NuGet.
  8. I must be able to add a non-xml, human-writable file to my project or solution that specifies the dependencies I want and will install/uninstall these packages from my system and project(s) as appropriate (see: Bundler)
  9. I must be able to specify that I want to install a "prerelease" of a package (and authors can mark their packages as being a pre-release to share bleeding edge code with users)
  10. Everything must work cross-platform via Mono (everything related to NuGet ... if packages will only run on certain systems, that's understandable)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment