Подтвердить что ты не робот

Использовать переменную окружения в конфигурации NuGet?

Есть ли способ использовать переменную окружения в конфигурации nuget?

В настоящее время я вынужден использовать относительный путь следующим образом:

<configuration>
  <config>

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

Но было бы действительно полезно иметь переменную окружения с абсолютным путем.

4b9b3361

Ответ 1

Если вы запустите 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 Reference

Ответ 2

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 годом, поэтому я еще не пробовал.

Ответ 3

Это работает с использованием стандартных ссылок на переменные среды% foo% от nuget 3.4 и выше: https://github.com/NuGet/Home/issues/1852