¿Cómo evitar que Team Foundation Server añada la carpeta Packages al proyecto?

Descripción: 

Cuando se comparte un mismo proyecto entre varios ordenadores (o varios usuarios), es muy problemático que se replique la carpeta Packages, puesto que cuando se descarga el proyecto por primera vez, las referencias a los paquetes se pierden si la ubicación no es exactamente la misma.

La forma de evitar este problema, es eliminar la carpeta Packages del proyecto en nuestro servidor de Team Foundation, de forma que cuando se descarga el proyecto en una máquina, el gestor de paquetes NuGet se encarga a su vez de descargar los paquetes de forma automática. También podemos decirle a TFS que ignore esta carpeta al subir el proyecto en el momento que lo protegemos.

Resolución: 

Para evitar que se suba automáticamente la carpeta Packages al proteger un proyecto, deberemos indicárselo a Team Foundation Server (en adelante TFS) y a NuGet, puesto que este gestor de paquetes también intenta gestionar el Control de Código Fuente.

En primer lugar, deberemos crear un fichero llamado .tfignore en la carpeta raíz de la solución, con el siguiente contenido:

\packages
!\packages\repositories.config

De esta forma, TFS ignorará la carpeta packages, a excepción del fichero repositories.config.

Para desactivar la integración de NuGet con el Control de Código Fuente, deberemos seguir las siguientes indicaciones:

  1. En el Explorador de Control de Código Fuente, hacemos click con el botón derecho en la solución, y añadimos una carpeta llamada .nuget
  2. En dicha carpeta, añadimos un fichero llamado NuGet.config con el contenido indicado a continuación. Si ya existiese un fichero NuGet.config en la carpeta raíz de la solución, deberemos dejarlo donde estaba. En ese caso, tendríamos 2 ficheros NuGet.config, uno en el raíz, y otro en la carpeta .nuget
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <solution>
        <add key="disableSourceControlIntegration" value="true" />
      </solution>
    </configuration>