2011-06-23 19 views
32

Quiero una estructura de directorio personalizado para mi contenido en mi proyecto MVC por ejemplo:ASP.NET MVC estructura de carpetas y NuGet

\Content 
    --\js 
    --\css 
    --\img 

¿Es posible contar un paquete NuGet para instalar las secuencias de comandos en el contenido \ js ¿carpeta? Por ejemplo, el paquete jQuery para que el archivo jquery-1.6.js esté instalado en la carpeta Content \ js?

+12

Creo que esto es un gran descuido en Nuget. Hay mucho que amar en ASP.NET MVC, pero nunca me han gustado las carpetas de Contenido y Scripts. Solía ​​cambiarlos a carpetas css, images y js más estándar, pero siento que tengo que seguir con Contents and Scripts ahora que uso Nuget. –

+3

La estructura es incómoda por varias razones. Me gusta mejor su estructura, pero incluso si cedo y uso Scripts, necesito una subcarpeta para todo mi código * my * para mantenerla limpia y separada. Las bibliotecas deberían ser la subcarpeta, no mis cosas. –

+0

posible duplicado de [¿Es posible cambiar la ubicación de los paquetes para NuGet?] (Http://stackoverflow.com/questions/4092759/is-it-possible-to-change-the-location-of-packages-for -nuget) –

Respuesta

6

Creo que la respuesta es "No". Hay, sin embargo, algunas referencias para poder configurar la carpeta raíz en la que NuGet instala las cosas: http://nuget.codeplex.com/workitem/215 (ver los comentarios)

+4

Creo que el elemento de trabajo está relacionado con dónde se encuentra la carpeta/packages, no dónde se instalan los archivos de contenido de un proyecto. De todos modos, tienes razón en que NuGet actualmente no es compatible con esto. Los archivos de contenido están instalados en relación con la raíz del proyecto. Estoy de acuerdo en que sería bueno definir rutas para tipos de archivos comunes. Tal vez debería agregar un elemento de trabajo en CodePlex. – Kiliman

+0

¿Sabes por casualidad si ese sigue siendo el caso? Usted respondió esto hace bastante tiempo, así que me preguntaba si se estableció algo para permitir tal funcionalidad. – julealgon

0

La respuesta a esto es "no" porque la carpeta "Contenido" es una de las convenciones de Nuget carpetas. Sin embargo, si cambia el nombre de su carpeta Content a, por ejemplo, public y luego tiene el paquete Nuget su carpeta public/js, cuando traiga el paquete extraerá los archivos a la carpeta public/js.

Desde que empecé a usar Nuget que me pasa a utilizar para mi public contenido público en lugar de Content y más bien utilizar Content para los archivos que quiero traer a tocar como archivos de origen (see here one usage of Content).

13

Una solución consiste en utilizar Nuget Package Explorer y descargar el paquete que desee. Luego puede editar las carpetas dentro del paquete usando Package Explorer para que se ajuste a su gusto y guardarlo en su propio repositorio de Nuget. Puede ser una carpeta del sistema de archivos o puede ser más sofisticado aquí: Hosting Your Own NuGet Feeds.

Por supuesto, esto significa que debe mantener actualizados los paquetes en su repositorio privado. Claramente, si tiene muchos paquetes para manejar esto, podría convertirse en un problema. Sin embargo, parece bastante probable que una versión futura de Nuget trate el tema de los feeds locales porque es un problema para las compañías que 'restringen las bibliotecas de terceros que sus desarrolladores pueden usar' como se menciona en el . Hospedaje de sus propios feeds NuGet referencia encima.

3

Cómo se instala jQuery está determinado por el productor del paquete, que es el equipo de jQuery en su caso. Dónde se instala el paquete jQuery depende de usted.

Sin embargo, el donde sólo pueden ajustarse en función de la ubicación del paquete instalado ($(SolutionDir)\packages carpeta es el valor por defecto), y el proyecto de destino donde se instala en. A partir de ese momento, el productor del paquete se hace cargo y decide dónde termina cada parte del contenido del paquete.

Hay algunas buenas convenciones para ASP.NET MVC, como una carpeta de contenido, una carpeta de secuencias de comandos, una carpeta App_Start (para WebActivator), etc. Piense en los riesgos y el esfuerzo adicional de tratar de alejarse de estos convenciones. ¿Superan los beneficios?

Ahora, si realmente quiere usar sus propias convenciones, puede crear su propio paquete con la estructura de contenido que desee y colocar las secuencias de comandos jQuery donde desee en los proyectos que lo consumen.

Esto significa que usaría su propio paquete con esa versión específica de jQuery.Solo debe tener cuidado de respetar la política de licencias del paquete original y no romper los pasos o requisitos de instalación específicos del paquete original, lo cual es bastante fácil de hacer si comienza a cambiar manualmente la estructura del paquete.