I would recommend going with option # 2:
Create the source code and copy it .dll to my project, possibly .dll in the repo. Everything seems to be in order, but I usually don't like checking for binaries in my source control.
That's why:
- Easy
- Quickly and easily unlock all the problems that you have.
- The authors of the libraries are updated regularly, so I think you will post your fix soon.
Now, if authors are rarely updated, I will be more inclined towards option No. 3. In addition, if you work in a corporate environment and you see that this package (and others) is shared between development groups, again, No. 3 will have more sense. Finally, if your company had a strong presence in the legal team, again No. 3 would make more sense, as it would give you control over which packages were used internally.
Based on what you have above, it looks like you just need something specific for your project, in which case sometimes make a link to the DLL to unlock yourself under the assumption that the fix will be published shortly after bringing you back to NuGet.
source share