2011-09-22 14 views
5

Hemos configurado con éxito un par de repositorios de paquetes locales utilizando el paquete NuGet.Server y los alojamos en un servidor web IIS local. Podemos conectarnos desde Package Manager e instalar ningún problema. Entonces estos están funcionando bien.Cómo configurar la línea de herramienta de comando de NuGet.exe busca paquetes

Para que no tengamos que verificar en nuestra carpeta de paquetes, hemos incluido la siguiente línea de comando en cada archivo de proyecto que incluye referencias NuGet. Esto funciona, si NuGet.exe está en la ruta en el agente de compilación de CI.

Sin embargo, me gustaría mover la configuración del origen de formar la línea de comandos en cada archivo de proyecto y ponerlo en un solo lugar, de preferencia donde otros desarrolladores molestos no puede cambiarlo;)

<Target Name="BeforeBuild"> 
    <Exec Command="nuget install $(ProjectDir)packages.config -s 
     http://domain:80/DataServices/Packages.svc/; 
     http://domain:81/DataServices/Packages.svc/ 
     -o $(SolutionDir)packages" /> 
</Target> 

Es hay una mejor manera?

Respuesta

5

fin llegué NuGetPowerTools para instalar después de que el consejo de digitaltrust en http://blog.davidebbo.com

Aunque NuGetPowerTools resuelven mi problema, que era excesivo para lo que quería. Requiere que ingrese en el control de versiones una carpeta .nuget que crea en su raíz de solución. La carpeta contiene NuGet.exe y un par de archivos de destino. No me gusta esto, ya que creo que el control de versiones es para el código fuente, no para las herramientas.

Se me ocurrió la siguiente solución.

  1. Guarde NuGet.exe en una carpeta de su disco local, tanto en las máquinas de desarrollo continuo como de desarrollo. Elegí C: \ Herramientas \ Nuget \
  2. añadir que rutaarchivos a la ruta de la variable de entorno en todos los ambientes
  3. En las máquinas de integración continua, encontrar% APPDATA% \ NuGet \ NuGet.Config e introduzca la siguiente

    <?xml version="1.0" encoding="utf-8"?> 
    <configuration> 
    <packageSources> 
        <add key="LocalRepositoryName" value="http://Domain/DataServices/Packages.svc/" /> 
    </packageSources> 
    

    puede agregar más de una entrada a packageSources y NuGet va a buscar en el orden en que aparecen

  4. el código después de la acumulación de mis ques Ahora puede enmendarse a lo siguiente.

    <Target Name="BeforeBuild"> 
        <Exec Command="nuget install $(ProjectDir)packages.config 
        -o $(SolutionDir)packages" /> 
    </Target> 
    

El resultado final de esto es que cada vez que se cambia la ubicación del repositorio se aprueba, la configuración tiene que ser cambiado en un solo lugar y no en todos los archivos csproj. Además, son los administradores del servidor de integración continua quienes determinan esa ubicación, no los desarrolladores en sus llamadas de línea de comando.

+0

Esto parece más excesivo que usar herramientas eléctricas Nuget. Puede obtener los mismos beneficios si lo usó y acaba de cambiar dónde busca nuget.exe .. – davidfowl

+1

No habría tenido que idear esta solución si PowerTools realmente funcionara sin tener que entrar y editar el paquete, que tenía un archivo guardado con la codificación incorrecta. El hecho de registrar un paquete no probado en el feed oficial me costó, y probablemente muchos otros, medio día. Eso le costó mucho dinero a mi cliente. –

+0

He visto a mucha gente quejarse de ese error, pero en realidad no lo he reproducido. Siento que tengas que pasar por eso. Espero que se solucione pronto. – davidfowl

13

Sí, existe ;-) Eche un vistazo a NuGetPowerTools. Después de ejecutar Install-Package NuGetPowerTools, agrega una carpeta .nuget a su $ (SolutionDir) que contiene nuget.exe, nuget msbuild objetivos y configuraciones (que deberá verificar).

Después de eso, simplemente ejecuta Enable-PackageRestore y configura los objetivos de msbuild en sus archivos de proyectos visuales de estudio que asegurarán que los paquetes se obtengan en un paso previo a la compilación, incluso en su servidor de compilación, sin registrar ningún paquete . (¡no olvide registrar la carpeta .nuget!).

De esta manera, simplemente gestiona los orígenes del paquete nuget en un archivo de configuración nuget msbuild (en la carpeta .nuget) central para su solución, en lugar de en cada proyecto.

Saludos, Xavier

+0

Exactamente lo que iba a decir. Incluso funciona desde dentro del estudio visual cuando presionas Ctrl + Shift + B – ferventcoder

+0

Lo intenté y obtuve este error. https://github.com/davidfowl/NuGetPowerTools/issues/8 No se puede instalar NuGetPowerTools. así que necesito otra manera. Creo que podría navegar por el paquete de PowerTools y volver a crear los pasos manualmente. –

+0

Alguien respondió en la publicación de David Ebbo: encendí el registro detallado para el cmdlet del módulo de importación y descubrí que NuGetPowerTools.psm1 era el archivo ofensivo. Al volver a guardar el archivo (que está vacío) en la codificación UTF-8, se solucionó el problema. –

Cuestiones relacionadas