2012-02-29 11 views
10

Estoy investigando algunas de las cosas de Nuget. Me pregunto si Nuget es apropiado para distribuir comandos .exe o, en ese caso, si Nuget solo está destinado a ser utilizado para referencias a un proyecto (por supuesto, también podría vincularlo a un exe en lugar de a un dll). IIRC). Obviamente, puedo crear fácilmente una aplicación de consola y luego hacer referencia a los paquetes de Nuget, pero me pregunto si esto siempre debería ser necesario. Además, parece que a diferencia de las gemas, no hay un repositorio local de gemas, por lo que siento que los .exe (s) no son el uso previsto para los paquetes de Nuget, pero no veo por qué tienen que ser limitados en este moda - o me estoy perdiendo algo?Nuget paquetes que son realmente comandos exe?

Respuesta

17

Puede incluir programas ejecutables en sus paquetes NuGet. De Creating and Publishing a Package:

herramientas - La carpeta de herramientas de un paquete es para scripts y programas powershell accesibles desde la consola Administrador de paquetes. Después de copiar la carpeta al proyecto de destino , se agrega a la variable de entorno `$ env: Path (PATH).

Hay algunas cosas que usted debe tener en cuenta, sin embargo, si usted decide hacer esto:

  • Tiene razón en que, a diferencia de RubyGems, NuGet no tiene el concepto de sistema- o paquetes a nivel de máquina; los paquetes están dirigidos a un solo proyecto o (más raramente) a una solución. Por lo tanto, este ejecutable se colocará en la carpeta del paquete para cada solución en la que se use.
  • La extensión NuGet Visual Studio agrega la ruta de la carpeta de herramientas del paquete a la variable de entorno PATH de su consola, para que pueda ejecutar cómodamente los programas en ella. Fuera de Visual Studio, cuando se usan otros clientes NuGet (como nuget.exe), no habrá ningún manejo automático de PATH, por lo que tendrá que gestionar la obtención de una ruta de acceso al programa.
  • Esta característica NuGet está diseñada para scripts y programas ejecutables que de alguna manera están relacionados con el desarrollo de un proyecto (por ejemplo, generadores de código, herramientas que manipulan archivos de proyectos, herramientas que complementan frameworks como emuladores o servidores de desarrollo, etc.). Si bien puede utilizar esta característica de formas para las cuales no fue diseñada, si está buscando entregar programas del sistema que no están realmente relacionados con el desarrollo del proyecto, puede consultar el Chocolatey, "un Administrador de paquetes de máquinas, algo así como apt-get, pero construido con ventanas en mente ".
+0

Gracias por la sugerencia - Nunca había oído hablar de Chocolatey. ;-) – lucidquiet

+1

si los archivos ejecutables dependen de los ensamblados en la carpeta lib, entonces no podrán cargarlos, a menos que estén duplicados en la carpeta de herramientas, ¿no? –

Cuestiones relacionadas