version control - usados - ¿Comprueba paquetes desde NuGet en el control de versiones?
sistemas de control de versiones mas usados (7)
Antes de NuGet, era una ''práctica recomendada'' aceptada común registrar todas las DLL externas usadas en un proyecto. Por lo general, en un directorio de Libs
o 3rdParty
.
Cuando trabajo con NuGet, ¿se supone que debo registrarme en el directorio de packages
, o hay alguna forma de que MSBuild descargue automáticamente los paquetes necesarios del feed nuget?
No
Desde que se hizo esta pregunta, ahora hay un flujo de trabajo sencillo para usar NuGet sin comprometer paquetes con el control de origen.
Desde su consola de administrador de paquetes, debe instalar ''NuGetPowerTools'' :
Install-Package NuGetPowerTools
Luego, para permitir que sus proyectos admitan la restauración de paquetes, debe ejecutar otro comando:
Enable-PackageRestore
Ahora está listo para confirmar su código base sin la carpeta de paquetes. El comando anterior cambió los archivos de tu proyecto para que, si faltan paquetes, se descarguen y añadan automáticamente.
Fuente
Usando NuGet sin comprometer paquetes para el control de fuente
A partir del 20/20/13, hay algo llamado "Nuget Restore". En realidad, no tiene que verificar en la carpeta del paquete si así lo desea. (Especialmente si está usando DVCS)
Mira esto: Usando NuGet Sin comprometer paquetes para control de fuente http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
A pesar de todas las respuestas aquí, sigue siendo una simple y horrible solución no tener todas sus dependencias bajo "algún tipo" de control de versión.
Para GIT, esto significaría GIT-LFS.
El episodio reciente con NPM muestra por qué: si el repositorio de Internet del que dependes se rompe, no está disponible, etc., ¿entonces no estás jodido?
Ya no puede construir sus cosas y, por lo tanto, no puede entregar.
Desde que hice la pregunta, hice el siguiente acercamiento para no tener que verificar en el directorio de paquetes de toplovel.
En un archivo toplevel build.msbuild:
<Target Name="NuGet">
<ItemGroup>
<NuGetPackage Include="*/packages.config" />
</ItemGroup>
<Exec Command=''libs/NuGet.exe install "%(NuGetPackage.FullPath)" -o Packages'' />
<!-- optional for project that has JavaScript content -->
<CreateItem Include="Packages/*/Content/Scripts/*">
<Output TaskParameter="Include" ItemName="NuGetJSFiles"/>
</CreateItem>
<Copy SourceFiles="@(NuGetJSFiles)" DestinationFolder="MainProj/Scripts/" OverwriteReadOnlyFiles="true" SkipUnchngedFiles="true" />
<Delete Files="MainProj/Scripts/.gitignore" />
<WriteLinesToFile File="MainProj/Scripts/.gitignore" Lines="%(NuGetJSFiles.Filename)%(NuGetJSFiles.Extension)" /
<Delete Files="@(PostNuGetFiles)" />
</Target>
En cada archivo project.csproj
<Target Name="BeforeBuild">
<Error Condition="!Exists(''../Packages/')" Text="You must run > msbuild build.msbuild to download required NuGet
Packages" />
<!-- optional for project that has JavaScript content -->
<ReadLinesFromFile File="Scripts/.gitignore">
<Output TaskParameter="Lines" ItemName="ReqJSFiles" />
</ReadLinesFromFile>
<Message Text="@(ReqJSFiles)" />
<Error Condition="!Exists(''Scripts/%(ReqJSFiles.Identity)'')" Text="You must run > msbuild build.msbuild to download required NuGet JS Package - Scripts/%(ReqJSFiles.Identity)" />
</Target>
Esta publicación se ha vuelto muy obsoleta. La respuesta sigue siendo NO, pero la solución ha cambiado. A partir de NuGet 2.7+ puede habilitar la restauración automática de paquetes sin incluir el archivo NuGet.exe en su fuente (esto es indeseable, por decir lo menos) y si utiliza cualquier DVCS moderno puede ignorar la carpeta de paquetes. Si necesita personalizaciones especiales, puede crear un archivo nuget.config en la raíz de la solución.
http://docs.nuget.org/docs/reference/package-restore
Además, con el nuevo formato csproj también puedes evitar los archivos nuget.config adicionales, ya que está integrado ahora. Por favor revisa esta publicación que explica mejor:
Me doy cuenta de que la realidad era diferente cuando esta pregunta se publicó y se respondió originalmente, pero afortunadamente la respuesta cambió un poco. Ahora es posible usar NuGet para descargar dependencias a través de MSBuild usando un evento de Preconstrucción. No necesita colocar la carpeta de paquetes en el repositorio de código, todas las dependencias se descargarán y / o actualizarán en compilación. Puede ser una solución alternativa, pero se ve lo suficientemente decente. Consulte la siguiente publicación de blog para obtener más información: http://blog.davidebbo.com/2011/03/using-nuget-without-committing-packages.html
Sí. Considere que el directorio "packages" es equivalente a su directorio "libs" que mencionó en su pregunta. Este es el enfoque que personalmente tomo con mis proyectos de OSS.
Estamos investigando características que permitirían a MSBuild descargar automáticamente los paquetes necesarios, pero eso no se ha implementado (a partir de NuGet 1.1).
Creo que algunas personas pueden haber implementado dichas funciones por sí mismas, pero nuestro plan es tener esa característica incorporada en NuGet 1.2 o 1.3 con suerte.