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

Каково ожидаемое поведение родительских каталогов в global.json?

(Теперь поднят как DNX issue 3206...)

Окружение DNX: 1.0.0-rc1, Windows 10 x64.

Представьте, что у меня есть три решения:

  • Application1
  • Application2
  • Общие

Каждое из этих решений имеет несколько проектов; было бы бессмысленно иметь все проекты в одном решении, хотя это упростило бы эту конкретную проблему.

Различные проекты в Application1 и Application2 зависят от проекта в Common. Их файлы project.json указывают на эту зависимость обычным образом. Хотя в конечном итоге я хотел бы публиковать артефакты из Common на сервер NuGet (внутренний или внешний), имеет смысл временно просто построить все из источника.

Я могу сделать это, отредактировав global.json внутри (скажем) Application1, чтобы:

{
  "projects": [ "src", "test", "../Common/src" ], 
  "sdk": { "version": "1.0.0-rc1-final"  }
}

С этим я могу выполнить dnu restore из каталога Application1... но не из корневого каталога. (Ошибка: "Невозможно найти зависимость" Common " >= 0.0.0- *".) Я могу запустить dnu restore Application1 из корневого каталога, но не только dnu restore.

Я пробовал множество способов обратиться к каталогу Common src (включая "./Common/src", "Common/src", "../repo-name/Common/src" ), но не еще радости. В каждом случае я получаю сообщение об ошибке, показанное выше. Я пробовал использовать dnu -v restore, но, похоже, не предоставлял дополнительной информации о том, какие каталоги были исследованы для пакетов на основе исходного кода.

Итак, как решить "../Common/src" в global.json? Является ли это резонансным подходом к сценарию разработки, который я описал, и если это так, просто вопрос об ошибке с DNX?

4b9b3361

Ответ 1

Это не работает так, как вы ожидаете, когда вы начинаете dnu restore, он пытается найти global.json в текущих или родительских каталогах и считывает из него путь к проекту. Поэтому в вашем примере он ничего не читает, потому что global.json находится в подкаталоге.

Один из способов решения этой проблемы - добавить global.json в корневую папку со следующим содержимым:

{
   "projects": [ "Application/src", "Common/src" ]
}

Я спрошу об этом сценарии и, если он изменится при переходе на dotnet cli