【问题标题】:how to tell NuGet to install package per project and not solution如何告诉 NuGet 为每个项目安装包而不是解决方案
【发布时间】:2013-10-09 10:42:36
【问题描述】:

我有一个类库项目,可以在不同的解决方案中重复使用。 我希望 NuGet 将工具包引用添加到类库项目并将其存储在项目文件夹而不是解决方案文件夹中。

例子:

我有

D:\Projects\MyClassLibrary

D:\Projects\Solution1

D:\Projects\Solution2

使用 NuGet,我想向 MyClassLibrary 项目添加一个工具包。

现在,如果我打开了 Solution1,NuGet 正在将工具包添加到

D:\Projects\Solution1\packages

我想告诉 NuGet 将工具包安装在 MyClassLibrary\packages 文件夹中。

如何做到这一点?

【问题讨论】:

  • 所以另一种说明你的目标的方式是你想将一些解决方案的包存储在特定解决方案的包文件夹中(你的问题有点令人困惑,因为你提到了包含解决方案的“项目”,但在 C# 领域,通常情况正好相反。)

标签: nuget nuget-package


【解决方案1】:

您可以从 nuget 2.1 更改默认包文件夹位置:

<configuration>
  <config>
    <add key=" repositoryPath" value=" C:\myteam\teampackages" />
  </config>
  ... 
</configuration>

参考:Specify ‘packages’ Folder Location

-----------------更新--------------------------

您必须为解决方案启用nuget automatic package restore。 当你这样做时,在解决方案根目录中创建一个 .nuget 文件夹。

在该文件夹内有文件NuGet.Config,您可以在其中放置此配置。

------------------(最后) 2020 年更新-------------------------

nuget 自那以后发生了变化,此答案不再适用

【讨论】:

  • 该 xml 文件应该放在哪里?我试图把它放在 'D:\Projects\MyClassLibrary' 下,但没有用
  • NuGet 自动包还原选项已设置。解决方案文件夹中没有“.nuget”文件夹,只有“包”文件夹。我不认为 N​​uGet 可以按我的意愿工作。
  • 我使用的是最新版本;我会将您的答案标记为感谢您的 cmets 的答案。但这并没有解决我的问题
  • @OpCoder 谢谢!尝试创建一个新的解决方案并启用包还原,然后复制 .nuget 文件夹