在NuGet配置中使用环境变量?

And*_*yuk 15 .net c# visual-studio nuget

有没有办法在nuget配置中使用环境变量?

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

<configuration>
  <config>

    <add key="repositoryPath" value="..\..\teampackages" />
  </config>
</configuration>
Run Code Online (Sandbox Code Playgroud)

但是拥有一个带有绝对路径的环境变量会非常方便.

Jes*_*and 6

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

<?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>
Run Code Online (Sandbox Code Playgroud)

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

更多信息("替换代币"部分):

NuSpec参考


Hak*_*tık 5

语法如下:

<configuration>
  <config>       
    <add key="repositoryPath" value="%ENVIRONMENT_VARIABLE%/teampackages" />
  </config>
</configuration>
Run Code Online (Sandbox Code Playgroud)

重要笔记

  1. 变量名应该用%%;括起来 例如%env_variable_name%
  2. 不要使用语法$env_variable_name。(出于 MAC 和 Linux 兼容性原因)
  3. 目录分隔符是/and NOT \(出于 MAC 兼容性原因)
  4. 这需要 NuGet 3.4+
  5. 有关更多信息,请参阅文档