license - use packages from this vsts tfs feed
Obtener TFS para ignorar mi carpeta de paquetes (12)
Estoy intentando que TFS (2013) ignore mi carpeta de packages
. ¡Con pasión no quiero que se controle la fuente ya que estoy usando NuGet y es genial!
Intenté encubrir (no parece funcionar), intenté agregar archivos .tfignore
, no se ignora nada. ¿Por qué el equipo de TFS no solo agrega una opción para ignorar permanentemente una carpeta o archivo como lo hacen muchos clientes de Subversion?
Necesita utilizar espacios de trabajo locales para que .tfignore
funcione. El archivo .tfignore
debe estar en la carpeta que contiene los archivos o carpetas que desea ignorar.
Entonces, si su estructura de solución se ve así:
/Project
/Packages
/OtherStuff
foo.cs
Ponerías tu archivo .tfignore en / Project:
/Project
/Packages
/OtherStuff
foo.cs
.tfignore
El contenido del .tfignore en su caso sería:
/packages
Aquí hay documentación para usted: http://msdn.microsoft.com/library/vstudio/ms245454(v=vs.110).aspx#tfignore
Establezca su solución para restaurar en la compilación, la carpeta del paquete y el archivo de paquetes serán registrados pero los paquetes no.
Agregue un archivo nuget.config en una carpeta .nuget en su solución. Agregue lo siguiente al archivo nuget.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
</configuration>
El disableSourceControlIntegration es lo que hace el truco para TFS Version Control.
Si está usando Git con TFS, necesita agregar un archivo ".gitignore". Puede hacer esto en "proyecto de equipo | Configuración | ''agregar archivo de ignorar''". A continuación, abra el archivo y descomente la instrucción de ignorar incorporada para Nuget Packages.
Si está utilizando TFVC y tiene espacios de trabajo locales configurados, puede usar el archivo ".tfignore" que respeta un formato idéntico al archivo Git. Creo que necesitas "paquetes /".
Tuve el mismo problema. /packages
deberían funcionar, pero no para mí. packages*.*
funcionaron.
para las personas que informaron que la opción .tfignore no funcionaba con la configuración nuget.config, podría ser de su interés; estos pasos finalmente funcionaron para mí:
- Eliminar todo en mi carpeta de paquetes
- Asegúrese de que TFS no tenga cambios en esa carpeta pendiente
- Cerrar VS
- Vuelva a abrir VS y vuelva a cargar la solución, utilizando Nuget restore para volver a llenar los paquetes. Tenga en cuenta que no hay cambios pendientes para el control de fuente TFS.
Esto no funcionó para mí en Visual Studio en línea y VS2013.
- Haga clic con el botón derecho en Solución> Activar restauración de paquete NuGet. Esto agregará el archivo Nuget.config a la solución
- Agregue el .tfignore. Normalmente hago esto agregando un archivo de texto a la raíz de la solución, dejándolo detectar y luego excluyendo haciendo clic en ''detectar agregado''> clic derecho ignorar.
- Agregue los paquetes a .tfignore y dígale que incluya repositories.config
De los otros comentarios parece que su kilometraje puede variar en este punto. Esto es lo que hago:
Revisa todo, incluidos los paquetes.
Borre todos los paquetes en su solución y luego verifique este cambio (esto eliminará los paquetes de TFS)
Abra la solución y la compilación que agregará los paquetes al proyecto, pero TFS no los recogerá.
La solución que funcionó para mí fue crear un .tfignore y la siguiente configuración en Nuget.Config:
<configuration>
...
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
...
</configuration>
Mi .tfignore contiene esta línea:
/packages
[Estoy usando la actualización 2 de Visual Studio 2015]
Esto no es ideal, y actualmente está registrado como un problema abierto en github / nuget:
¡Puede configurar permanentemente esta única vez en su AppData/Roaming
para todas las soluciones (viejas y nuevas)!
En su archivo %AppData%/NuGet/NuGet.Config
, agregue lo siguiente justo antes de la etiqueta XML </configuration>
...
<config>
<add key="repositoryPath" value="C:/NuGetPackages" />
</config>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
... puede especificar cualquier ruta que desee, ¡lo importante es ponerlo FUERA de su espacio de trabajo TFS!
Ahora nunca más tendrás que preocuparte por eso. Su carpeta de solución ya no contendrá ningún paquete; todas las soluciones usarán su ubicación de paquetes personalizados de forma predeterminada.
NOTA - Esto funciona por usuario.
Una solución alternativa a lo anterior es la siguiente.
- Agregue la carpeta de paquetes a TFS (sin ningún archivo o subcarpeta)
- Haga clic derecho en la carpeta de paquetes
- Clic izquierdo Avanzado
- Haz clic en Capa
Vale la pena señalar que esta solución debería aplicarse por espacio de trabajo TFS. Me ha funcionado de manera mucho más confiable en lugar de usar el archivo .tfignore
.
Puede leer más acerca de este enfoque en el artículo del blog Prevenir que TFS agregue paquetes NuGet instalados al control de fuente .
Este es el trato: tenemos que decirle a NuGet y TFS que ignoren los paquetes, porque NuGet está tratando de hacer cosas relacionadas con el control de fuente que no debería estar haciendo (¡mal forma, Microsoft!). Entonces tienes que hacer dos cosas.
Primero, agregue un archivo llamado .tfignore
a la carpeta de la solución (tenga en cuenta la falta de s
después de la tf
). Sus contenidos deben ser los siguientes:
/packages
Eso le dice a TFS que ignore su carpeta de paquetes. Ahora, usted pensaría que esto también ignoraría el archivo repositories.config
. Pero no lo hará. ¿Por qué? Quién sabe, las formas de Microsoft son extrañas y misteriosas. En realidad, creo que es parte de las cosas de NuGet que describo a continuación, pero si eso se soluciona en el futuro y quieres conservar el archivo repositories.config
lugar de dejar que VS lo regenere, deberías poder usar esto:
/packages
!/packages/repositories.config
OK, ahora gracias a nuestro archivo .tfignore
, TFS está ignorando sus paquetes. Todo está bien, ¿verdad? INCORRECTO , porque NuGet se está volviendo loco con su control de fuente y está agregando los paquetes a sus cambios pendientes. Así que ahora vamos a decirle a NuGet que ya lo corte.
Crea una carpeta llamada .nuget
en la raíz de tu carpeta de soluciones. 1 Ahora, cree un archivo llamado NuGet.config
y NuGet.config
en esta nueva carpeta 2 . Sus contenidos deberían verse así:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
</configuration>
Y ahora sus paquetes deben permanecer fuera del control de la fuente. Solo recuerda agregar los archivos NuGet.config
y .tfignore
al control de fuente para que nunca se pierdan.
EDITAR: Si tiene problemas, puede eliminar su carpeta de paquetes, verificar ese cambio y luego seguir los pasos anteriores.
TAMBIÉN EDITAR: Parece que esto no sucederá con las versiones más nuevas de Nuget. Entonces, si cambias a VS / TFS 2017, este problema desaparecerá sin saltarte los aros anteriores.
1 . Agregue la carpeta usando Source Control Explorer; haga clic derecho en la solución-> Agregar carpeta->. nuget
2 . Cuando descubrí esto usando VS 2013, encontré que NuGet.config tenía que ir en la carpeta .nuget. Incluso si ya tiene un archivo NuGet.config en la raíz de la carpeta de la solución (porque, por ejemplo, su empresa tiene una alimentación nuget interna). Sin embargo, algunos en los comentarios han indicado que funciona bien en la raíz de la solución en VS 2015. Personalmente, cambié a usar TFS en modo git, por lo que no puedo probar. Además, si tiene un feed personalizado, asegúrese de tener tanto el feed personalizado como nuget.org como claves en el archivo Nuget.config, o en ocasiones TFS decidirá al azar que no puede restaurar los paquetes.
La respuesta de Terje no funciona todo el tiempo para mí, a veces funcionará por un tiempo, pero luego me dejará una carga de "adiciones" una vez más.
La única forma que he encontrado para resolver esto permanentemente es ocultar la carpeta de paquetes en mi área de trabajo.
Por ejemplo:
Type Server Local
============================================
Active $/Work/Main C:/Code/Main
Cloaked $/Work/Main/Packages