2011-12-21 11 views
9

Tôi gặp vấn đề mà tôi nghĩ có thể là phổ biến, tìm kiếm trên web cho nó nhưng không tìm thấy gì.IIS Express trên máy phát triển chia sẻ (rdp)

Chúng tôi đang sử dụng một máy phát triển chia sẻ, và mỗi nhà phát triển kết nối thông qua RDP và có hồ sơ của mình riêng, máy tính để bàn, vv

Vấn đề tôi gặp phải là với IIS bày tỏ. Vì nó được cấu hình ở mức người dùng (applicationhost.config bên trong tài liệu/iisexpress/config) và cổng được cấu hình phải khớp với một khai báo trong tệp .csproj, hai nhà phát triển không thể chạy trên cùng một cổng, vì nó cung cấp lỗi "cổng đã được sử dụng". Vì vậy, để làm cho nó hoạt động, chúng tôi phải tự thay đổi cổng cả trên csproj và trong applicationhost.config cho mỗi nhà phát triển, nhưng nó chỉ là một sửa chữa tạm thời khi chúng tôi cam kết thay đổi của chúng tôi để SVN, các tập tin csproj được sáp nhập , vì vậy chúng tôi phải thực hiện quy trình này mỗi khi có ai đó cam kết/cập nhật.

Câu hỏi của tôi là: có cách nào sạch để sử dụng IIS express với Visual Studio 2010 trên máy phát triển được chia sẻ không?

Cảm ơn.

+1

sẽ được sử dụng Visual server Development Studio với cổng tự động được gán là một lựa chọn hay không cần phải sử dụng IIS Express cho một lý do cụ thể? – Filburt

+0

Chúng tôi sẽ cố gắng làm cho IIS thể hiện công việc, vì nó đọc các giá trị cấu hình IIS được khai báo trong web.config, trong khi Cassini thì không. Tôi biết rằng Cassini với các cổng tự động hoạt động, chúng tôi chỉ muốn tìm một cách chính xác để sử dụng IIS express. –

+0

FYI, IIS Express sẽ là mặc định trong phiên bản Visual Studio tiếp theo. Tôi không chắc chắn rằng Cassini thậm chí sẽ có sẵn. –

Trả lời

10

Câu trả lời được kiểm tra một phần. Bạn không chắc chắn nó sẽ hoạt động như thế nào trên một máy trạm đa người dùng. Nó có thể cung cấp cho bạn, hoặc người khác ở đây, một khởi đầu cho một giải pháp thích hợp hoạt động tốt nhất trong môi trường hiện tại của bạn.

Dường như Visual Studio lưu trữ tất cả cấu hình web trong csproj/vbproj và IISExpress lưu cấu hình của nó trong% userprofile% \ Documents \ IISExpress \ config \ ApplicationHost.Config.

Thông thường, chúng tôi lưu trữ tệp csproj trong kiểm soát nguồn, nhưng bỏ qua tệp csproj.user để mỗi người có thể có một số cài đặt duy nhất, chẳng hạn như cấu hình web.

  • Mỗi người dùng đăng nhập vào ô phải có tiểu sử của riêng họ.
  • Mỗi cấu hình phải có bản sao mã nguồn riêng.
    • Mỗi bản sao nguồn của người dùng sẽ chứa tệp csproj.user của riêng họ.
  • Bỏ qua. ** proj.user * tệp trong điều khiển nguồn của bạn.

Sao chép cài đặt web vào csproj.user bằng cách bỏ chọn tùy chọn Áp dụng cài đặt máy chủ cho tất cả người dùng và sau đó cam kết kiểm soát nguồn. unchecking the option Apply server settings to all users

Mỗi người dùng kéo bản sao nguồn sẽ phải định cấu hình cài đặt web, sử dụng cổng duy nhất mà người dùng khác không sử dụng và bỏ chọn hộp ở trên để cấu hình của họ không được chuyển sang những người dùng khác.

Thực hiện việc này, mỗi cấu hình sẽ có ứng dụng IIS Express ApplicationHost riêng của họ.Config được định cấu hình với cổng khác với các cấu hình khác. Mỗi bản sao của người dùng nguồn sẽ có một csproj.user được cấu hình với cùng một cổng trong cấu hình IIS Express của cấu hình của họ.

Để tham khảo:

tôi đã cố gắng thay đổi applicationHost.config IIS Express để sử dụng một cổng khác với những gì Visual Studio hy vọng và Visual Studio là không thể kết nối các debugger để IIS Express.

Làm thế nào cấu hình IIS Express hoạt động: http://msdn.microsoft.com/en-us/library/ms178109.aspx

+0

Thật đơn giản nhưng thật tuyệt vời. Cảm ơn. Điều đó có tác dụng và là cách giải quyết tốt nhất cho phương pháp "rdp" mà chúng tôi có. –

+0

Có ai đã thử giải pháp này với Visual Studio 2013 không? Có vẻ như hộp kiểm "Áp dụng cài đặt máy chủ cho tất cả người dùng" đã bị xóa, vì vậy tôi không thể thực hiện việc này. Tôi có cùng một vấn đề chính xác. –

+0

Tôi đã không kiểm tra bản thân mình, nhưng có vẻ như nó đã trở lại trong VS2013 Update1. Đây là thẻ Connect: https://connect.microsoft.com/VisualStudio/feedback/details/800003/the-apply-server-settings-to-all-users-store-in-project-file-option-is-missing -in-vs2013 –

0

Tùy chọn tốt nhất bạn có thể sử dụng là tận dụng lợi thế của Import functionality được tích hợp sẵn trong MSBuild.

Về cơ bản, bạn sẽ tạo mục tiêu xây dựng riêng biệt cho từng người dùng. Sau đó, bạn có thể nhập trực tiếp mục tiêu này từ tệp được tham chiếu này. Sau đó tôi sẽ khuyên bạn nên tạo tệp này trên máy chủ (cho mỗi người dùng), nhưng để nó bên ngoài kiểm soát nguồn.

Điều này sẽ cho phép mỗi người dùng có cổng IIS tùy chỉnh mà không xung đột với người khác.

+0

Điều đó có nghĩa là tạo một mục tiêu khác cho mỗi người dùng một lần hay cho từng dự án? Bởi vì nếu nó là oneshot nó có thể là thú vị, nhưng nếu nó cần phải được lặp đi lặp lại cho mỗi dự án, nó có thể trở thành một mớ hỗn độn. –

+0

Tôi chưa thử nghiệm trực tiếp, nhưng nó phải ở trên cơ sở một lần.Vì bạn sẽ nhập một tập hợp con của tệp cấu hình chỉ liên quan đến các thiết lập IIS. (mặc dù dòng nhập khẩu sẽ phải được thêm vào mỗi dự án một lần, nhưng có thể tham chiếu cùng một tệp) –

-1

Tôi nghĩ bạn có thể tạo tên miền phụ cho từng người dùng và thực hiện các thay đổi được yêu cầu và thực hiện thử nghiệm. Bằng cách này, mỗi người dùng có thể có tên miền phụ và cổng riêng của mình và do đó làm việc độc lập trên IIS Express được chia sẻ.

+0

một giải pháp lộn xộn, không tốt cho nhiều dự án. –

-2

Bạn có thể sẽ không thích câu trả lời của tôi, nhưng đây là suy nghĩ của tôi:

Như bạn thấy, các cấu hình được gắn với hồ sơ người dùng và không phải là máy chủ; điều này là do IIS Express không có ý định được sử dụng như một máy chủ phát triển được chia sẻ. Bạn nên sử dụng IIS đầy đủ.

Tôi không thấy bất kỳ lợi ích hoặc lý do nào để sử dụng cùng một hộp vật lý để phát triển. Phải thừa nhận rằng, tôi không biết tất cả các chi tiết về kịch bản của bạn với nguồn cấp phép hoặc máy trạm, nhưng dường như bạn không thu được nhiều tiền từ việc đưa mọi người RDP vào hộp để sử dụng Visual Studio - mỗi người vẫn cần giấy phép, hiệu suất sẽ chậm hơn và bạn không nên làm việc trên cùng một cá thể dự án.

Bạn nên nghiêm túc xem xét toàn bộ thiết lập của bạn cho sự phát triển:

Mỗi nhà phát triển nên sử dụng Visual Studio trên máy trạm của họ, và debug/thử nghiệm có sử dụng IIS Express (cấu hình với các cổng tương tự và các thiết lập trên tất cả các máy - rất dễ dàng).

Từ đó, nhà phát triển của bạn nên kiểm tra mã của họ để kiểm soát nguồn và kiểm tra các xung đột có thể có hoặc có thể không phát sinh. Tôi không chắc về SVN nhưng tự động hóa MSBuild có sẵn trong TFS có thể được sử dụng để thiết lập chính sách xây dựng liên tục triển khai cài đặt IIS phổ biến sao cho mã được hợp nhất của bạn được kiểm tra và có thể sử dụng được từ cài đặt IIS đầy đủ được đề cập ở trên.

Bất cứ điều gì khác sẽ là giải pháp thay thế/hack sẽ cắn bạn vào mông sau.

+0

Phần sao chép/svn cục bộ trong phần giải thích của bạn đã như thế. Mỗi người dùng có hồ sơ riêng, máy tính để bàn/cài đặt riêng của mình, chỉ là chúng tôi có 2 máy chủ phát triển (cùng cấu hình, plugin được cài đặt, v.v.) và chúng tôi kết nối với nhau hoặc phát triển. Tôi không ở vị trí để quyết định xem quyết định này có tốt hay không, đây là một công ty lớn và tôi chỉ là một nhà phát triển ở đây. Tôi chỉ đang cố gắng tìm ra cách để cải thiện mọi thứ, đó là tất cả. Tôi sợ rằng sẽ không có bất kỳ giải pháp sạch nào. Chúng ta sẽ phải quay lại cassini, tôi sợ. –