I am used to keep the dlls outside source control. It's also could be done easily with NuGet packages.

However, I've noticed that some popular OS projects (such as https://github.com/octokit/octokit.net, https://github.com/AutoFixture/AutoFixture) prefer to keep the dlls checked in. Why is it so?

有帮助吗?

解决方案

So, Mark Seemann fully answered to this question in his post. I'm totally agree with all the points.

其他提示

You'll also find popular OS projects that do the opposite. Once a package is pushed to the NuGet repository it's never ever touched again. I think as a package owner you don't even have the ability to modify an existing package. You have to upload an updated version with another version number instead. So every pushed package is unique. Even deleted packages are kept in the background. So if some of your projects refer to a deleted package it still gets restored but it's not listed in the repo anymore. I don't like the fact to cludder up my source control and am a fan of only checking in things that are needed to run the program. Actually you are relying on an external resource. If you don't like this fact there is still another option. You can start your own repository, maybe file based on a network share, where you hold a copy of the packages you are using.

A stable trunk always refers to certain versions of dlls. Newer or older versions of the dll can be incompatible due to changed function-parameters etc. So keeping your dlls outside of revision control may lead to loosing your working dll-version.

Also, see NuGet's policy on deleting packages.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top