2011-06-23 53 views
32

Tôi muốn có một cấu trúc thư mục tùy chỉnh cho nội dung của tôi trong dự án MVC của tôi ví dụ:ASP.NET MVC cấu trúc thư mục và NuGet

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

Có thể kể một gói NuGet để cài đặt các script trong Content \ js thư mục? Ví dụ: gói jQuery để tệp jquery-1.6.js được cài đặt trong thư mục Content \ js?

+12

Tôi nghĩ đây là một sự giám sát lớn trong Nuget. Có rất nhiều điều để yêu trong ASP.NET MVC, nhưng tôi chưa bao giờ thích các thư mục Content and Scripts. Tôi đã từng thay đổi chúng thành các thư mục css, hình ảnh và js chuẩn hơn, nhưng tôi cảm thấy mình phải gắn bó với Nội dung và Tập lệnh ngay bây giờ mà tôi sử dụng Nuget. –

+3

Cấu trúc rất khó xử vì nhiều lý do. Tôi thích cấu trúc của bạn tốt nhất, nhưng ngay cả khi tôi cho vào và sử dụng Scripts, tôi cần một thư mục con cho tất cả các mã * của tôi * để giữ cho nó sạch sẽ và tách biệt. Thư viện nên là thư mục con, chứ không phải nội dung của tôi. –

+0

có thể trùng lặp của [Có thể thay đổi vị trí của gói cho NuGet không?] (Http://stackoverflow.com/questions/4092759/is-it-possible-to-change-the-location-of-packages-for -nuget) –

Trả lời

6

Tôi tin câu trả lời là "Không". Tuy nhiên, có một số tham chiếu để có thể đặt thư mục gốc NuGet cài đặt mọi thứ vào: http://nuget.codeplex.com/workitem/215 (xem nhận xét)

+4

Tôi tin rằng mục công việc có liên quan đến thư mục/packages nằm ở đâu, không phải nơi các tệp nội dung từ dự án được cài đặt. Dù sao, bạn đúng là NuGet hiện không hỗ trợ điều này. Các tệp nội dung được cài đặt tương đối so với gốc của dự án. Tôi đồng ý rằng nó sẽ là tốt đẹp để xác định đường dẫn cho các loại tập tin phổ biến. Có lẽ bạn nên thêm một mục công việc trên CodePlex. – Kiliman

+0

Bạn có biết điều đó vẫn xảy ra không? Bạn đã trả lời điều này khá lâu rồi, vì vậy tôi đã tự hỏi liệu có cái gì đó được đưa ra để cho phép chức năng như vậy không. – julealgon

0

Câu trả lời là "không" vì thư mục "Nội dung" là một trong quy ước của Nuget thư mục. Tuy nhiên, nếu bạn đổi tên thư mục Content thành, ví dụ: public và sau đó có Nuget gói thư mục public/js của bạn thì khi bạn đưa gói vào nó sẽ giải nén các tệp vào thư mục public/js.

Kể từ khi tôi bắt đầu sử dụng NuGet tôi chuyển sang sử dụng public cho nội dung nào của tôi thay vì Content và thay vì sử dụng Content cho các tập tin mà tôi muốn mang lại ảnh hưởng như file nguồn (see here one usage of Content).

13

Giải pháp thay thế là sử dụng Nuget Package Explorer và tải xuống gói bạn muốn. Sau đó, bạn có thể chỉnh sửa các thư mục trong gói bằng cách sử dụng Trình khám phá gói để phù hợp với khẩu vị của bạn và lưu nó vào kho lưu trữ Nuget của riêng bạn. Đây có thể là thư mục hệ thống tệp hoặc bạn có thể tinh vi hơn ở đây: Hosting Your Own NuGet Feeds.

Tất nhiên điều này có nghĩa là bạn phải luôn cập nhật các gói trong kho lưu trữ riêng của mình. Rõ ràng nếu bạn có rất nhiều gói để đối phó với điều này có thể trở thành một vấn đề. Tuy nhiên, có vẻ như một phiên bản tương lai của Nuget sẽ giải quyết vấn đề nguồn cấp dữ liệu địa phương vì đó là vấn đề cho các công ty 'hạn chế thư viện của bên thứ ba mà nhà phát triển của họ có thể sử dụng' như được đề cập trong mục Lưu trữ tài liệu tham khảo của riêng bạn ở trên.

3

Cách jQuery được cài đặt được xác định bởi nhà sản xuất gói, đó là nhóm jQuery trong trường hợp của bạn. Trường hợp gói jQuery được cài đặt tùy thuộc vào bạn.

Tuy nhiên, nơi chỉ có thể được điều chỉnh về mặt vị trí của gói cài đặt ($(SolutionDir)\packages thư mục là mặc định), và dự án mục tiêu nơi bạn cài đặt nó vào. Từ đó trở đi, nhà sản xuất bao bì quyết định xem mỗi phần của nội dung gói sẽ kết thúc ở đâu.

Có một số quy ước tốt cho ASP.NET MVC, chẳng hạn như thư mục Nội dung, thư mục Scripts, thư mục App_Start (dành cho WebActivator), v.v. Hãy suy nghĩ về những rủi ro và nỗ lực liên quan đến việc cố gắng tránh xa những công ước. Họ có lớn hơn lợi ích không?

Bây giờ nếu bạn thực sự muốn sử dụng quy ước của riêng mình, bạn có thể tạo gói của riêng mình với cấu trúc nội dung mong muốn và đặt các kịch bản lệnh jQuery mà bạn muốn chúng trong các dự án tiêu thụ.

Điều này có nghĩa là bạn sẽ sử dụng gói riêng của mình với phiên bản cụ thể đó của jQuery.Bạn chỉ cần cẩn thận để tôn trọng chính sách cấp phép của gói ban đầu và không phá vỡ bất kỳ bước cài đặt cụ thể nào hoặc yêu cầu từ gói ban đầu, điều này khá dễ thực hiện nếu bạn bắt đầu thay đổi cấu trúc gói theo cách thủ công.

Các vấn đề liên quan