如何使用NuGet为基于文件的包源设置相对路径?

如何使用NuGet为基于文件的包源设置相对路径?,nuget,Nuget,我将NuGet 2.1与多个解决方案一起使用,每个解决方案都位于一个父目录下的子目录和一个由所有解决方案共享的包目录中(这在NuGet 2.1中成为可能) 我想添加一个基于文件的包源,它指向我工作副本中的packages目录(我正在使用Subversion) 这项工作: <configuration> <repositoryPath>_Packages</repositoryPath> <activePackageSource> &

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

我想添加一个基于文件的包源,它指向我工作副本中的packages目录(我正在使用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>

_包裹

我不想硬编码绝对路径,但在
activePackageSource

内的value属性中找不到使用相对路径的方法。看起来现在支持这种方法

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

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <packageSources>
        <add key="Local" value="packages-local" />
      </packageSources>
    </configuration>
    
    
    
  • 将包生成到包本地文件夹

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


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

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


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

    我在这里没有任何回应,所以我在nuget问题跟踪程序上创建了一个问题:如果您试图通过GUI修改这些设置,Visual Studio(2019)似乎会丢失这些设置。通过“Manage NuGet packages for Solution”(管理NuGet packages for Solution)菜单重命名了一个源,在
    NuGet.config
    节点中写入的内容只是空的
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
        <config>
        <add key="repositoryPath" value="NugetPackages\" />
        </config>
    </configuration>
    
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
        <config>
        <add key="repositoryPath" value=".\NugetPackages\" />
        </config>
    </configuration>