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

NuGet и Git Субмодули

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

Моя текущая потребность состоит в том, чтобы иметь отдельные хранилища Git, каждый из которых содержит файл решения .Net с соответствующими проектами. Один или несколько из этих репозиториев будут содержать только библиотеки классов, и мне нужно использовать эти библиотеки в других репозиториях.

Моим первым было использование Git Submodules, чтобы избежать уродливой копии-вставки и по-прежнему иметь исходный код библиотек классов, доступных при разработке приложений.

Итак, моя попытка состояла в том, чтобы включить подмодуль, а затем в моем текущем решении "добавить существующий проект" и загрузить нужную библиотеку классов (ы).

Огромная проблема, которую мне не удалось преодолеть, - восстановление пакета Nuget. Импортируемые проекты ссылаются на библиотеки "..\Packages *", но при импорте в качестве подмодуля они находятся в дополнительной подпапке, поэтому они не могут найти требуемые зависимости:

- MySolution.sln
- Packages folder
- MyAppProject folder
- Submodule folder
-- EXPECTED packages folder for MyLibraryProject that I cannot generate
-- MyLibraryProject folder

Одно решение, которое я нашел и попробовал, было this, но у него две основные проблемы:

  • Он должен работать с использованием восстановления пакета MsBuild, и я абсолютно не хочу его использовать.
  • Даже при попытке использовать восстановление пакета MsBuild он вообще не работает, у меня все еще есть папка Packages в моей текущей папке решений. Возможно, я сделал что-то неправильно, но опять же, я не хочу использовать подход MsBuild.

Теперь мне очень хотелось бы знать, есть ли чистый способ решить эту проблему, или если я могу сделать только то, чтобы отказаться от наличия исходного кода библиотек в моих приложениях и опубликовать свои библиотеки на частной NuGet кормить и ссылаться на них оттуда.

Спасибо.

4b9b3361

Ответ 1

Похоже, ваша проблема заключается в том, что проекты из подмодуля находятся на другом уровне каталога, чем их репо-решение. Это обычная проблема с Nuget, потому что она восстанавливается на уровне решения. Вы можете использовать путь намеченного исправления script здесь, чтобы заменить ваши ссылки на $(SolutionDir) и, вероятно, решить проблему. https://github.com/owen2/AutomaticPackageRestoreMigrationScript/blob/master/README.md#fixhintpathsps1