No se puede actualizar automáticamente un paquete NuGet a la última versión durante la compilación

Tenemos dos soluciones .NET separadas:

Ejecutar una compilación para la primera solución produce nuestro producto final: un montón de DLL. Estas DLL se entregan a nuestros clientes a través de un paquete NuGet.La segunda solución sirve como una solución de prueba de producto: el paquete NuGet está instalado y se construye y ejecuta, por lo que hace uso de nuestro producto exactamente de la misma manera que lo harían nuestros clientes.

El desafío aquí es que debe haber una manera en que nuestro último paquete NuGet se instale automáticamente en la solución de prueba del producto, preferiblemente durante la compilación de esta solución de prueba del producto.

Basado en las ideas deuna pregunta similarLlegué tan lejos con la configuración de la solución de prueba de producto:

Primero habilité NuGet Package Restore. Esto me permite deshacerme completamente del directorio de "paquetes" de VCS ya que NuGet descargaría automáticamente el paquete con la versión definida en el archivo packages.config antes de la compilación.Luego agregué el siguiente evento de construcción previa en Visual Studio:$(SolutionDir).nuget\nuget update -prerelease $(ProjectDir)packages.config. Esto me permite obtener la última versión de nuestro paquete NuGet durante la compilación.

Actualmente utilizo el escenario anterior para ejecutar compilaciones locales con Visual Studio y compilaciones desatendidas con TeamCity. La solución parece funcionar para ambos escenarios a primera vista, pero en realidadNo produce el resultado esperado.: cuando se construye la solución de prueba de producto, en elbin directorio no obtengo la última versión de las DLL, solo la última versión-1.

El problema es que aunque elnuget update el comando actualiza todo como se esperaba, incluida lapackages.config y el.csproj archivo, sunuevo contenido no es recogido por la construcción, por lo tanto - como mi conjetura va - elHintPath ajustes de la.csproj El archivo aún refleja un estado "antes de la compilación", por lo tanto, los archivos DLL antiguos se copian en elbin directorio. Asumo el.csproj el archivo se procesa solo una vez: antes de que se active el evento de precompilación, y los cambios realizados por el evento de precompilación se ignoran hasta la siguiente compilación.

Consideré las siguientes soluciones:

Al parecer, la precompilación no es "pre" suficiente. Si hubiera un punto anterior podría insertar elnuget update comando, mi solución anterior probablemente funcionaría.Leí que podría anular los HintPath-s en el archivo .csproj definiendo un ReferencePath. Pero dudo que pudiera encontrar fácilmente el camino correcto o podría configurarlo con suficiente anticipación para que la compilación lo recoja.Como solución alternativa, podría ejecutar las compilaciones dos veces: duplicar el paso de compilación para la solución de prueba de producto en TeamCity y siempre podría compilar la solución dos veces localmente en Visual Studio.

¿Alguien ha descubierto cómo actualizar automáticamente un paquete NuGet a la última versión durante la compilación?

Respuestas a la pregunta(3)

Su respuesta a la pregunta