将nuget包添加到项目时,它会将程序集放在解决方案级别的/ packages文件夹中。
我知道有办法改变这个,但我想知道为什么这是默认位置,因为这些原因似乎非常无益:
1)如果您的项目是多个解决方案的一部分,/ packages文件夹不一定是项目所期望的位置。
2)您需要手动将其检查到其他团队成员的源代码管理中,这比它是需要它的项目的一部分要方便得多。
3)如果您将项目移动到文件系统上的其他位置或者移动到没有完整代码库的其他计算机上,它将找不到它所期望的/ packages文件夹。
如果NuGet在项目中使用了/ packages文件夹而不是解决方案,似乎所有这些都将得到解决。这似乎是一个更合理的地方放置项目所依赖的包。
所以......我假设在解决方案层面上有一些很好的理由,我希望有人可以启发我。
答案 0 :(得分:4)
您应该阅读本文,其中解释了如何使用nuget而不将包提交到源代码控制,以及通过副作用解决问题的第1点和第3点:http://blog.davidebbo.com/2011/03/using-nuget-without-committing-packages.html
答案 1 :(得分:2)
我认为这是为了节省磁盘空间。如果你有一个包含50个项目的大型解决方案,并且你在每个项目中都使用了一个软件包,那么最终会得到50个软件包,二进制文件和所有项目。在这方面,将它们保持在解决方案级别会更有效率。
在源代码管理方面,您不应该将实际的包文件夹放在那里。只需添加packages.config文件,然后执行David Ebbo在mathieu提到的博客文章中建议的内容,或创建一个简单的批处理文件,根据它可以找到的packages.config文件下载所有软件包。
创建自己的公司nuget Feed并不费力,因此您可以将私人包保存在那里。