суббота, 18 апреля 2020 г.

Visual Studio VS Nugget packages VS Git Submodule

решил недавно проблемку, может, этот текст кому-то сохранит часик времени.

есть .net-приложение, исходники котрого представляют из себя .net-решение (solution), состоящее из проектов

и есть второе, тоже решение/проекты

некоторые из этих проектов используются в обоих приложениях (общие утилиты, общий код), поэтому эти проекты вынесены в git-подмодуль (submodule). в подмодуле они привязаны к другому решению (в смысле, sln-файл лежит тоже в подмодуле. то есть, общие проекты привязаны и к sln в подмодуле, и к sln в родительском проекте )

так вот, недавно понадобилось в один из разделяемых проектов добавить nuget-пакет.
и столкнулись с такой проблемкой: если добавлять nuget-пакет из Вижуал Студии с загруженным родительским решением (в смысле, sln вне подмодуля) - бинарники пакета добавляются в папку packages этого родительского решения. и, соответственно, во втором родительском решении  у общих проектов будут недействительные ссылки на бинарники.

чтоб не сталкиваться с этой проблемой, нужно nuget-пакеты в общий код добавлять из-под решения, находящегося в подмодуле.
но будет небольшое неудобство: после клонирования репозитория и подмодуля в новую папку, чтоб nuget скачал все пакеты для проектов подмодуля через GUI-команду  "Restore nuget packages" , придется загрузить sln из подмодуля и выполнить эту команду так же и там


папки "packages" у нас игнорируются через .gitignore, чтоб не забивать git бинарниками


.net framework 4.7.?, Visual Studio Professional 2017

Комментариев нет:

Отправить комментарий