我习惯于将 dll 保留在源代码控制之外。也可以使用 NuGet 包轻松完成。
但是,我注意到一些流行的操作系统项目(例如https://github.com/octokit/octokit.net、https://github.com/AutoFixture/AutoFixture)更喜欢保持 dll 签入。为什么是这样吗?
我习惯于将 dll 保留在源代码控制之外。也可以使用 NuGet 包轻松完成。
但是,我注意到一些流行的操作系统项目(例如https://github.com/octokit/octokit.net、https://github.com/AutoFixture/AutoFixture)更喜欢保持 dll 签入。为什么是这样吗?
所以,Mark Seemann 在他的帖子中完全回答了这个问题。我完全同意所有观点。
稳定的主干总是指某些版本的 dll。由于更改了函数参数等,较新或较旧版本的 dll 可能不兼容。因此,将您的 dll 置于修订控制之外可能会导致您的工作 dll 版本丢失。
另请参阅NuGet 关于删除包的政策。
您还会发现流行的操作系统项目正好相反。一旦一个包被推送到 NuGet 存储库,它就再也不会被触及。我认为作为包所有者,您甚至没有能力修改现有包。您必须使用另一个版本号上传更新版本。所以每个推送的包都是独一无二的。甚至已删除的包也会保留在后台。因此,如果您的某些项目引用了已删除的包,它仍然会被恢复,但它不再列在 repo 中。我不喜欢混淆我的源代码控制的事实,并且我喜欢只检查运行程序所需的东西。其实你是依赖外部资源。如果您不喜欢这个事实,还有另一种选择。您可以启动自己的存储库,可能是基于网络共享的文件,您可以在其中保存正在使用的包的副本。