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

时间:2012-10-17 11:04:07

标签: nuget

我正在使用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内的值属性中使用相对路径的方法。

2 个答案:

答案 0 :(得分:8)

看起来现在支持这个。

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或至少关闭 - 重新打开您的解决方案才能获取配置。)

答案 1 :(得分:0)

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

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

NugetPackages旁边手动创建nuget.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的编辑生效。