2012-10-02 24 views
14

cấu trúc dự án của tôi trông như thế này:Không thể chạy dự án MVC4 nếu không sử dụng thư mục đầu ra tiêu chuẩn

  • src
    - thư viện lớp 1
    - thư viện 2
    lớp - dự án web
  • bin
    - gỡ lỗi
    - giải phóng

Thư mục đầu ra mặc định cho một dự án web MVC4 là .\Bin\ (tức là trong thư mục của dự án web), nhưng tôi thay đổi nó thành một cái gì đó như ..\bin\debug\ hoặc ..\bin\release\ để phù hợp với cấu trúc dự án ở trên của tôi. Nó biên dịch tốt và các tập tin nhị phân đi đến các địa điểm chính xác.

Nhưng khi tôi chạy dự án, nó phàn nàn rằng Could not load type Myproject.MvcApplication, trong khi nếu tôi không thực hiện các thay đổi trên thì nó hoạt động.

Làm cách nào để kiểm soát vị trí cho tệp nhị phân? Tôi muốn thư mục đầu ra tách biệt hoàn toàn với các thư mục nguồn - nó dễ triển khai hơn và bảo mật hơn vì tôi không có hỗn hợp nguồn và tệp nhị phân ở một nơi.

Trả lời

10

Câu trả lời ngắn gọn, bạn không thể. Nó không có gì để làm với Visual Studio hoặc thậm chí. NET, đó là một hạn chế IIS.

Lý do là IIS mong đợi thư mục bin nằm ngay dưới vị trí thư mục trang web. Đây là một cơ chế bảo mật mà bạn không thể bỏ qua. Mục đích của nó là để ngăn chặn một trang web bị xâm phạm từ "thoát" khỏi các giới hạn của thư mục gốc của trang web.

Tại sao bạn thậm chí còn muốn làm điều này?

+0

Vì tôi sử dụng msbuild, và tôi triển khai mọi thứ từ thư mục bin đầu ra của msbuild của tôi. Và bởi vì tôi muốn nguồn tách biệt với các tệp nhị phân nên tôi không bao giờ vô tình cung cấp tệp cho người không nên có chúng. –

+0

Tôi không thấy điều này là một vấn đề. Có lẽ những gì tôi phải làm là tìm ra cách, để thuận tiện, khi tôi nhấp vào nút chạy/gỡ lỗi, nó chạy trang web từ thư mục bin của msbuild của tôi và không phải từ thư mục bin của dự án. Tôi có thể làm cho IIS Express làm điều đó không? –

+0

@BobbyB - Bạn không thể chạy trang web của bạn từ thư mục Bin, nó cần quyền truy cập vào tệp, như tệp xem, javascript, hình ảnh, v.v ... tất cả đều nằm dưới thư mục gốc, vì vậy nếu bạn tạo thư mục bin của mình thư mục gốc của bạn, sau đó bạn sẽ phải sao chép toàn bộ cấu trúc trang web của bạn trong thư mục bin. Bạn không thực sự có ý nghĩa. –

2

Tôi cũng nhấn phím này, nó là bất ngờ và khó hiểu vì việc tách gỡ và giải mã nhị phân là thực hành tiêu chuẩn và MVC có cài đặt thư mục đầu ra làm cho nó hấp dẫn. Có thể thực hiện việc này, xem here, nhưng nó hơi xấu xí.

Dường như có sự xung đột giữa việc tuân thủ các kỳ vọng của IIS và sự cần thiết phải giữ gỡ lỗi và phát hành riêng biệt và được dán nhãn rõ ràng. Tôi nghĩ rằng có một nhu cầu cho cả hai giải pháp hiện tại không đáp ứng rất tốt. Gỡ lỗi và phát hành là cân nhắc thời gian xây dựng, tôn trọng IIS là gói/thời gian triển khai và cả hai đã trở nên bối rối.

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