visual studio nuggets newtonsoft net microsoft visual-studio nuget

visual studio - studio - ¿Hay alguna manera de configurar NuGet Package Source por solución?



nuget visual studio 2017 (2)

Quiero agregar a la excelente respuesta proporcionada por BenAlabaster. Tenía algo el problema opuesto:

La compañía configuró globalmente su feed nuget privado personalizado para usar en todas las soluciones de forma predeterminada, y quería hacer una aplicación "prototipo" utilizando el feed nuget público .

Con esto (en el directorio de esa solución), el feed nuget público está disponible solo para mi solución específica, mientras que el feed de la empresa es el predeterminado para todas las demás soluciones:

<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <!-- Ditch all eventually upwards configured (private) feeds from an (enterprise) environment --> <clear /> <!-- Make sure we use the public nuget --> <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> </packageSources> <packageRestore> <add key="enabled" value="True" /> <add key="automatic" value="True" /> </packageRestore> <bindingRedirects> <add key="skip" value="False" /> </bindingRedirects> <disabledPackageSources> <!-- Ditch all eventually upwards configured (private) feeds from an (enterprise) environment --> <clear /> </disabledPackageSources> </configuration>

La clave era borrar todos los feeds deshabilitados hacia arriba , ya que deshabilitaron deliberadamente el feed público en su NuGet.config en% APPDATA% / NuGet.

¿Alguien sabe de una manera de hacer que Visual Studio aplique la configuración de las fuentes del paquete NuGet por solución en lugar de en todas las soluciones? Sigo teniendo problemas de versiones porque trabajo en múltiples proyectos que tienen sus propios repositorios privados NuGet. Es un fastidio seguir recordando a qué repositorio de NuGet pertenece cada proyecto y volver atrás y aplicar el correcto al proyecto correcto.


TLDR: sí

NuGet utiliza una aplicación jerárquica de fuentes de paquetes que comienza con NuGet.config a nivel de su perfil de usuario de Windows y luego aplica una configuración cada vez más granular que comienza en la raíz de la ruta del archivo que contiene su solución, y finalmente termina con el directorio que contiene su archivo de solución

Así que esto es lo que he logrado averiguar: cortesía de un Twitterer útil que me señala este documento:

https://docs.nuget.org/consume/nuget-config-file

Cuando edita las fuentes del paquete NuGet en Tools > NuGet Package Manager > Package Manager Settings: Package Sources Visual Studio Tools > NuGet Package Manager > Package Manager Settings: Package Sources opción Tools > NuGet Package Manager > Package Manager Settings: Package Sources , aplica esos cambios de forma predeterminada al archivo NuGet.config que se encuentra en su %APPDATA%/NuGet . Para anular esta configuración por solución (o por grupo de soluciones), debe agregar un archivo NuGet.config ubicado estratégicamente en algún lugar a lo largo de la ruta de su solución o soluciones.

Todo se aclarará si lee el documento NuGet, la solución que proporciono a continuación le permitirá especificar rápidamente una configuración para una única solución de Visual Studio:

  1. Navegue a% APPDATA% / NuGet y tome una copia de NuGet.config
  2. Vuelque una copia en la raíz de su solución, es decir, dónde vive Application.sln.
  3. Anule los valores predeterminados aplicados a su perfil de usuario editando la copia para que contenga solo las fuentes del paquete NuGet que sean relevantes para esta solución; por ejemplo, la fuente privada NuGet que contiene paquetes patentados para esta solución, pero no debe aplicarse a otros proyectos - por ejemplo:

<?xml version="1.0" encoding="utf-8"?> <configuration> <packageRestore> <add key="enabled" value="True" /> <add key="automatic" value="True" /> </packageRestore> <activePackageSource> <add key="All" value="(Aggregate source)" /> </activePackageSource> <packageSources> <!-- Ditch all the Global NuGet package sources we only want a single private NuGet repo for this project --> <clear /> <!-- Add the private NuGet package source for this solution --> <add key="My Private NuGet Server" value="http://myprivatenuget.com:8080/nuget" /> </packageSources> <disabledPackageSources> <!-- Add any package sources to ignore here using the same keys as defined in the packageSources list above--> <!--<add key="nuget.org" value="true" />--> <add key="Microsoft and .NET" value="true" /> </disabledPackageSources> </configuration>

Si desea que una configuración se aplique a varias soluciones, asegúrese de que todas las carpetas de soluciones estén contenidas en un directorio común y coloque NuGet.config para las fuentes de paquetes relevantes para esas soluciones en ese directorio común, asegurándose de que las carpetas de soluciones para proyectos que no están Para usar estas fuentes de paquetes no se incluyen en esta carpeta común.