30

我将 NuGet 2.1 与多个解决方案一起使用,每个解决方案位于单个父目录下的子目录和由所有解决方案共享的单个包目录中(这在 NuGet 2.1 中成为可能)。

我想添加一个基于文件的包源,它指向我的工作副本中的包目录(我正在使用 Subversion)。

这有效:

<configuration>
  <repositoryPath>_Packages</repositoryPath>
  <activePackageSource>
    <add key="Working copy package source" value="C:\AllMySolutions\_Packages" />
  </activePackageSource>
</configuration>

这不会:

<configuration>
  <repositoryPath>_Packages</repositoryPath>
  <activePackageSource>
    <add key="Working copy package source" value="_Packages" />
  </activePackageSource>
</configuration>

我不想对绝对路径进行硬编码,但找不到在内部的 value 属性中使用相对路径的方法activePackageSource

4

3 回答 3

29

看起来现在支持此功能。

http://nuget.codeplex.com/workitem/2810

  1. 将一个名为 nuget.config 的文件放在解决方案的根目录中(在包文件夹和解决方案文件旁边),其中包含:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <packageSources>
        <add key="Local" value="packages-local" />
      </packageSources>
    </configuration>
    
  2. 将包构建到 packages-local 文件夹。

  3. 此文件夹中的包可用于添加到解决方案中的其他项目。(您可能需要重新启动 VS 或至少关闭重新打开您的解决方案以获取配置)。

于 2015-02-20T21:21:02.797 回答
1

我有同样的问题<repositoryPath>。我需要强制我的 git 存储库中的所有解决方案使用相同的文件夹来存储他们的 NuGet 包。因此,我在nuget.config存储库的根目录上创建了一个文件,其中包含以下内容,如文档中所述:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <config>
    <add key="repositoryPath" value="NugetPackages\" />
    </config>
</configuration>

在手动创建NugetPackagesnuget.config安装软件包后,该目录中没有任何内容,但一切正常。然后我发现VS已经在C:\NugetPackages那里创建并移动了包。经过一段时间的反复试验,最后使用的相对路径.\对我有用:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <config>
    <add key="repositoryPath" value=".\NugetPackages\" />
    </config>
</configuration>

我希望它对其他配置也有相同的行为。

PS:正如 Matthew 已经说过的,我必须重新启动 VS 才能使我的编辑nuget.config生效。

于 2019-12-09T16:02:46.390 回答
1

对于 .NETCore/.NET5 和更新版本,config 键repositoryPath不再起作用,它现在被命名为globalPackagesFolder,所以:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <config>
        <add key="globalPackagesFolder" value=".\packages\" />
    </config>
</configuration>
于 2022-02-13T12:23:42.087 回答