8

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

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

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

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

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

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

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

4

2 回答 2

4

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

于 2011-07-19T14:19:15.783 回答
2

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

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

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

于 2011-07-19T14:23:35.460 回答