¿Cómo referencer y enviar una DLL .NET externa / de terceros dentro de una solución bajo control de versión en Visual Studio?

Pregunta rápida

¿Cómo agregar correctamente una reference a una DLL .NET externa / de terceros (que no es un package NuGet y no en GAC) y obligarlo a enviarse como parte de la solución (que está bajo control de versión) en Visual Studio?

Larga historia

Tengo una solución de Visual Studio 2013, que contiene un par de proyectos .NET. La solución está bajo control de fuente. Hay una gran cantidad de packages NuGet instalados que son utilizados por los proyectos, por supuesto. Pero uno de los proyectos necesita hacer reference a una DLL .NET externa / de terceros que no está disponible como package NuGet y no reside en GAC. Si solo agrego una reference a esa DLL en el proyecto, funcionará bien por el momento. Pero después de registrar un set de cambios con dicha modificación, cualquier persona que obtenga la última versión de la solución se encontrará con un problema al comstackrla, porque no tiene la DLL .NET referenceda en su máquina.

Veo dos posibles soluciones a su problema

  1. Puede agregar el dll en el TFS. Cree una carpeta bajo su solución llamada lib, por ejemplo, y coloque su dll allí. Luego haga reference al file dll desde esa carpeta. Cuando compruebe los cambios en, incluya la carpeta lib con el dll. Una vez que alguien más obtenga la última versión, recibirán sus cambios y la nueva dll. Tenga en count que los dlls a los que se hace reference en la carpeta de la solución utilizan una ruta relativa, por lo que cualquier otra persona que tenga esa carpeta y el dll en la carpeta de la solución no necesitarán hacer nada más

  2. Haz un package Nuget con ese dll y recíbalo en tu propio nutriente nuget. Puede get un feed y alojarlo en iis en una máquina dedicada o puede usar un recurso compartido de networking :). Nuget también funciona con "fonts de carpeta". La fuente de Nuget es simplemente una interfaz de usuario elegante sobre un repository de carpetas. Esto agrega la ventaja de que no tendrá dlls bajo control de fuente

Buena suerte

Puede crear una nueva carpeta en el proyecto donde se requiere el dll, luego hacer reference al dll en el proyecto desde allí y luego chekck-in al dll. Cuando los otros usuarios obtengan el último proyecto / solución obtendrán este dll automáticamente y no tendrán problemas en la construcción.

También puede considerar ingresar la DLL externa en el control de origen. Cree una carpeta "Externa" dentro de la carpeta del proyecto y coloque las DLL externas allí. Use esta ruta para hacer reference a la DLL externa. Esto debería funcionar con otros desarrolladores, así como cuando finalicen, tendrán la DLL y la ruta relativa adecuada en csproj.