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