Svn externos a la migration de Nuget: preocupaciones

Estoy migrando de la function de externalidades de Svn a nuget con un gran proyecto y hasta ahora parece una mala decisión. Una de mis soluciones contiene 70 proyectos donde la mayoría de ellos contiene las mismas references comunes (packages nuget). La estructura anterior era una carpeta Lib común por solución que contenía todas las references controladas por svn externals así que cada vez que quería actualizar una versión acababa de actualizar los numbers en tortuga svn y hacía clic en actualizar – trabajo rápido. Actualmente, cuando lo hago desde dentro de Visual Studio, demora entre 10 y 20 veces más porque sospecho que elimina la versión anterior del directory de packages de los packages, agrega un nuevo directory, actualiza la versión de packages.config y actualiza la ruta csproj . Entonces, si actualizo 7 packages en 70 proyectos y tengo Visual Studio abierto, tomará mucho más time. La alternativa es cerrar la solución y llamar a nuget update en command-line pero es más bien una solución alternativa. Anteriormente, la ruta era la misma, el concepto de packages.config no existía, por lo que el único cambio eran unas pocas líneas de código en un file de text donde llegamos a la siguiente conclusión: cambios en el control de la fuente. Cada vez que hago una actualización, hay una gran cantidad de cambios que deben registrarse en el control de la fuente y me parece un poco complicado. Descubrí que hay una nuget install -ExcludeVersion para nuget install -ExcludeVersion que excluirá la versión de la ruta, por lo que csproj no se cambiará y es una gran ventaja. ¿Es una buena convención usarlo? ¿Existe soporte para que Visual Studio lo use automáticamente cada vez que instalo un package? ¿Hay alguna manera de marcar un package nuget como "Ignorar versión en ruta"? Hasta donde yo sé, las respuestas a estas preguntas son no, no, no. ¿Cómo manejas el uso de nuget en proyectos más grandes? Quiero saber si hay algo que pueda leer sobre cómo manejarlo en proyectos más grandes.

Vamos a abordar cada problema uno por uno. Su primera pregunta dice:

¿Es una buena convención usarlo?

Esto está sujeto a la opinión. Si rompe su proyecto para usar la opción ExcludeVersion en la installation, entonces no puede usarlo. De lo contrario, te ahorra 70 files en push. La segunda pregunta dice:

¿Existe soporte para que Visual Studio lo use automáticamente cada vez que instalo un package?

Por lo que puedo decir (y puedo estar equivocado), no hay forma de hacer esto. Sin embargo, esto está saliendo de una investigación rápida, y se puede encontrar más información en el interior de los valores pnetworkingeterminados del file de configuration de Nuget (no pude encontrar esa configuration).

Estoy un poco confundido en cuanto a lo que quieres decir con

¿Hay alguna manera de marcar un package nuget como "Ignorar versión en ruta"?

Sin embargo, parece que te refieres a lo que el Coronel Pánico hizo en esta pregunta: Nuget Packages excluye la versión en el nombre de la carpeta , en la que la respuesta es no. Y, por último, haz una breve pregunta:

¿Cómo manejas el uso de nuget en proyectos más grandes?

Desafortunadamente, la respuesta a esta pregunta es bastante simple: no se puede (al less no de manera efectiva). Los mismos Nuget lo dicen en una publicación de blog del 10 de octubre de 2014. Si lees debajo de la sección "Consecuencias dañinas", puedes ver muchos de los problemas que te encuentras.

Bien, ahora en la solución. Me encontré con un problema similar con Nuget en el pasado, y la solución fue bastante simple. Todo lo que tuve que hacer para minimizar el time fue usar Git desde la línea de command usando .gitignore Visual Studio (Svn creo que también funcionaría). Sé que todos apreciaríamos que Nuget trabaje en estas instancias; Sin embargo, éste no es el caso. Como ya usas svn, te sugiero que no cambies. Después de todo, Nuget es realmente solo una macro dentro de Visual Studios que trabaja en base a una solución.

La respuesta para mi pregunta es project.json. No sabía que podía usarlo en todos los proyectos, incluso en WPF. https://oren.codes/2016/02/08/project-json-all-the-things/