繁体   English   中英

为什么 NuGet 将包放在“解决方案级别”?

[英]Why does NuGet put packages at the “solution level”?

当您将 nuget package 添加到项目中时,它会将程序集放在解决方案级别的 /packages 文件夹中。

我知道有办法改变它,但我想知道为什么这是默认位置,因为这些原因似乎非常无用:

1) 如果您的项目属于多个解决方案的一部分,则 /packages 文件夹不一定是项目所期望的位置。

2)您需要手动将其签入其他团队成员的源代码控制,这比需要它的项目的一部分方便得多。

3) 如果您将项目移动到文件系统上的其他位置或移动到没有完整代码库的另一台机器上,它将找不到它期望的 /packages 文件夹。

如果 NuGet 只是在项目中使用 /packages 文件夹,而不是解决方案,似乎所有这些都将得到解决。 无论如何,这似乎是一个更合乎逻辑的地方来放置项目所依赖的包。

所以......我假设在解决方案级别有一些很好的理由这样做,我希望有人能启发我。

您应该阅读这里,它解释了如何使用 nuget 而不将包提交到源代码管理,并通过副作用解决问题的第 1 点和第 3 点: http://blog.davidebbo.com/2011/03/using -nuget-without-committing-packages.html

我认为这是为了节省磁盘空间。 如果您有一个包含 50 个项目的大型解决方案,并且在每个项目中都使用了 package,那么您最终会得到该 package、二进制文件和所有文件的 50 个副本。 而将它们保持在解决方案级别在这方面效率要高得多。

在源代码控制方面,您不应该将实际的包文件夹放在那里。 只需添加 packages.config 文件,然后执行 David Ebbo在 mathieu 提到的博客文章中建议的操作,或者创建一个简单的批处理文件以根据它可以找到的 packages.config 文件下载所有包。

创建您自己的公司 nuget 提要并不费力,因此您可以将您的私人包保存在那里。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM