Моя компания столкнулась с проблемой ссылки на пакет NuGet из-за использования нами Multi-Homed Projects :
Довольно часто включить проект в несколько решений. К сожалению, NuGet не может понять, когда это так. А поскольку NuGet использует папку пакетов на уровне решения, пути подсказок в проектах становятся относительно решения. Если есть несколько решений, использующих проект, эти относительные пути могут легко сломаться.
Я пытаюсь найти разумный способ удержать пути подсказок от взлома.
Одна из моих идей заключалась в том, чтобы использовать переменную среды для указания на папку общего пакета (аналогично тому, как это делает NuGet с проектами .NET Core).
Я пытался создать nuget.config
, как показано ниже:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="repositoryPath" value="%USERPROFILE%\.nuget\shared_packages" />
</config>
</configuration>
И когда я устанавливаю пакет, он генерирует путь подсказки с относительным путем:
<Reference Include="QRCoder, Version=1.3.5.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\..\..\Users\Username\.nuget\shared_packages\QRCoder.1.3.5\lib\net40\QRCoder.dll</HintPath>
</Reference>
Это не будет работать на других машинах, поэтому мне нужно вручную отредактировать файл .csproj
примерно так:
<Reference Include="QRCoder, Version=1.3.5.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>$(USERPROFILE)\.nuget\shared_packages\QRCoder.1.3.5\lib\net40\QRCoder.dll</HintPath>
</Reference>
Могу ли я настроить nuget.config
(или что-то еще?), Чтобы путь подсказки использовал буквальное значение $(USERPROFILE)\.nuget\shared_packages
, поэтому мне не нужно каждый раз вручную редактировать файл .csproj
?