20

有没有办法在文件中使用环境变量NuGet.Config

目前我被限制使用相对路径,如下:

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

但是使用绝对路径的环境变量会非常方便。

4

4 回答 4

6

如果您在同一目录中nuget pack MyProject.csproj具有相应MyProject.nuspec文件的项目上运行,NuGet 将使 MSBuild 属性作为标记提供,格式为$Property$,其中Property是 MSBuild 属性的名称。例如:

<?xml version="1.0"?>
<package >
  <metadata>
    <id>$id$</id>
    <version>$version$</version>
    <title>$title$</title>
    <authors>$author$</authors>
    <owners>$author$</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>$description$</description>
    <copyright>Copyright 2013</copyright>
  </metadata>
  <files>
    <file src="$OutputPath$MyProject.pdb" target="lib\net40"/>
  </files>
</package>

在此示例$id$$version$$title$$author$$description$是 NuGet 本身根据项目文件和 AssemblyVersion 属性(通常在 AssemblyInfo.cs 中找到)提供的特殊值。但是,$OutputPath$是在公共目标中定义的 MSBuild 属性。您还可以使用 $MSBuildProjectDirectory$ 或任何其他标准属性。

此处的更多信息(“替换令牌”部分):

NuSpec 参考

于 2013-05-31T17:54:05.080 回答
3

NuGet V3 支持全局包文件夹,请参阅http://blog.nuget.org/20151008/NuGet-3-What-and-Why.html

NuGet V3.2 支持全局 NUGET_PACKAGES 环境变量来指定共享全局包文件夹的位置。请参阅: https ://docs.nuget.org/release-notes/nuget-3.2

也许其中之一可以帮助您解决问题。

我和你有同样的问题,这些功能看起来很有希望解决我遇到的实际问题。NuGet 3.2 仅适用于 VS2015,我们在 2015 中还有一些其他问题,所以我还没有尝试过。

于 2015-11-12T14:11:15.960 回答
2

这可以使用 nuget 3.4 及更高版本的标准 %foo% 环境变量引用: https ://github.com/NuGet/Home/issues/1852

于 2017-06-07T07:59:15.510 回答
0

这是语法:

<configuration>
  <config>       
    <add key="repositoryPath" value="%ENVIRONMENT_VARIABLE%/teampackages" />
  </config>
</configuration>

重要笔记

  1. 变量名应该用%%;括起来 例子%env_variable_name%
  2. 不要使用语法$env_variable_name。(出于 MAC 和 Linux 兼容性原因)
  3. 目录分隔符是/ \(出于 MAC 兼容性原因)
  4. 这需要(NuGet 3.4+)
  5. 有关更多信息,这里是文档
于 2022-02-19T14:23:46.433 回答