我有一个包含不同项目的 C# 解决方案。在这些项目中,我有一些普通的 nuget 包,如 Newtonsoft.Json、EntityFramework 等。但是当我在另一台计算机上 checkout 我的源代码并构建它时,它不会复制 Dlls
我已将整个解决方案文件夹提交给 git,我可以在 Bitbucket 中看到包文件夹和内容。我做错了什么?
P.S:我知道我可以在下面运行来恢复我的包,但这是一个很大的痛苦。 P.S.S:我搜索并看到了this和 this 。我正在寻找一种方法来防止这种情况再次发生
nuget install packages.config
最佳答案
使用 NuGet 的惯用方法(例如,与 npm 不同,通常提交 node_packages
)是仅提交 packages.config
。 Visual Studio 将检测 packages/
文件夹中丢失的包并在生成时恢复它们,命令行中的 nuget Restore
也会执行相同的操作。
这样做的原因是二进制文件比文本文件大,并且不可比较(即不可能存储增量)。我不确定 git 是否能像 svn 那样工作,但 nuget 的作者并不仅仅为那些使用 git 的人编写。
如果您担心包裹丢失,我有两点:
- Nuget.org 对于这种可能性非常谨慎。他们已经进行了设置,以便只能软删除软件包,这意味着恢复可以看到这些版本,而
nuget install
则不会。 - 许多人运行自己的内部包服务器(例如 Klondike),充当 nuget.org 的代理。如果您想打包内部库并使用 nuget 将它们分发到您的项目中,而不将它们发布到互联网上,这也很有用。
关于c# - 从 git checkout 后 nuget dll 丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38787957/