Cómo resolver packages nuget cuando se usan submodules de git para VS Solution

Tengo dos repositorys. El primero es un gran repository de integración con muchos proyectos en él. El segundo es una solución relativamente pequeña con una serie de proyectos que se desarrollan por separado y luego se integran en la primera solución.

Agregué el segundo repository git al primer repository git como submodule, así que tengo esa estructura de files:

MainSolution.sln SomeProject1 SomeProject2 packages my-second-project SecondSolution.sln SomeProject3 SomeProject4 

Y mi repository separado (después de restaurar los packages nuget) se ve como

 SecondSolution.sln SomeProject3 SomeProject4 packages 

Ahora, cada proyecto hace reference a la carpeta nuget restre packages por separado. De modo que ninguno de mis proyectos del submodule agregado pudo restaurar sus packages nuget porque searchon la carpeta my-second-project/packages que no existe. Y si reinstalo los packages nuget, entonces puedo ver en mi git diffs que comienzan a hacer reference a la carpeta de packages raíz (como ..\..\packages ).

¿Cómo puedo resolver esto?

*.csproj problema cambiando los ..\packages everywhere en todos los files *.csproj a $(SolutionDir)\packages . Funciona bastante bien Un simple script lo cubre:

 find -name "*.csproj" | xargs sed -i 's/\.\.\\packages/$(SolutionDir)\\packages/g' 

No sé por qué nuget no se comporta de esta manera por defecto, ahora necesito volver a ejecutar este script cada vez que actualizo / instalo packages nuget.