I'm going to start an open source project from scratch, using git (via github) to manage the source. The project will be written in C# and will depend on at least two external libraries (more are likely to come). I wonder how I should reference the libraries, and the following ideas came to my mind:
A folder within the project that contains all external libraries as dll
This would mean I have the dll files in my repo, which I think is bad, because it isn't source. Also, I don't know how Visual Studio (or other IDEs) store the path the libraries, if they use absolute paths, that would be impossible.Get the external libraries via nuget
This would be a clean and nice way to have the libraries organized, but what what if a library I need doesn't have a nuget-package? I can't just create one, can I?Storing the source of the external library as part of my repo
Sounds like a stupid idea, it would make updating the libraries a pain.Reference the repositories of the other projects via git somehow.
Sounds good, I could make my own fork of it to keep a state or just point to a commit. But is that even possible? Is that a good way?
tl;dr: How should I handle external libraries in an open-source C# project?
git submodule
, perhaps? I've never used it and hear it's not so good in practice, though. – apsillers May 23 '13 at 16:31