versiones usados subversion source software sistemas open mas control version-control msbuild nuget

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 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 &gt; 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 &gt; 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:

¿Debería agregarse la carpeta .nuget al control de versión?


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.