Posts
824
Comments
689
Trackbacks
1
Why do I have to use NuGet?

NuGet is Microsoft’s attempt to copy Ruby gems, as far as I can tell.  Great.  All for it.

But why is it that I have to use it, instead of getting the option to install normally through some MSI or other option?

Maybe I’m missing something, but if I want to install, say, EF 4.2 Beta 1, why can’t I have an option to install it globally, as opposed to having to install it within some specific project/solution?  I’m using a Microsoft release as an example, but I could just as easily use, e.g. AutoMapper as an example.

While I like the NuGet option, I don’t want to have to install things repeatedly across multiple projects if it is something I know I want across the board.

posted on Monday, August 22, 2011 8:53 PM Print
Comments
Gravatar
# re: Why do I have to use NuGet?
Jimmy Bogard
8/22/2011 10:18 PM
I wrestled with this one for quite a while. The CodePlex downloads are just a bit annoying to deal with, and as far as I'm concerned, those are pretty much dead.

Probably a good solution is to have NuGet, nightly downloads (like I have on the site) and archived downloads. I'll keep doing the GitHub site downloads for that (since that bandwidth is still free at least). Thanks for the suggestion, I'll make sure I don't lose the non-NuGet (but less scary than nightlies) option.
Gravatar
# re: Why do I have to use NuGet?
jdn
8/22/2011 10:40 PM
@Jimmy:

The other thing that is annoying about NuGet is that when you use it, you get the latest version. This is terrible when you are trying to use some code package in a highly restricted organization.

At any point, I might need to use, e.g. the version of AutoMapper from last October as opposed to what the most recent version is. By having a specific MSI type download, I can always reference that version, whereas with NuGet, unless I’m missing where you can specify a version, you are just stuck with the most recent one.

I really think this is bad for EF 4.2 Beta 1 for easily imagined reasons.

Thanks for the response. Consider me the 8th person reading the AutoMapper blog.
Gravatar
# re: Why do I have to use NuGet?
Justin
8/23/2011 10:42 AM
Generally speaking, I think the reason for this is that it tends to be easier to get a solution working when it contains the exact set of dependencies required stored in source control along with the project. The NuGet model does this, in somewhat of a clumsy way, by checking in the packages folder that it builds.

If you have installed the tool via MSI or the assemblies are in the GAC, that's all well and good for your single machine but makes migrating the project between developer machines and build servers more complicated as it has non-obvious setup requirements.

You have to install the component multiple times across multiple solutions, but you don't have cross solution dependency sharing either (and its associated versioning headaches).
Gravatar
# re: Why do I have to use NuGet?
jdn
8/23/2011 7:06 PM
@Justin

I can understand the dependencies thing, and that's all well and good, but as NuGet packages get updated more frequently, there's still a versioning problem.

Have you ever loaded the Mindspring Web Workbench package (or whatever the heck it is called)? it seems like there is an update once a week on it.

The 'my machine' thing is very easy to handle when you do the standard add a lib folder and add all dlls there and only reference those. Sure, there are manual steps there, but I don't see how NuGet avoids those.

Post Comment

Title *
Name *
Email
Url
Comment *  
Please add 6 and 7 and type the answer here: