Các tệp Web.Debug.config và Web.Release.Config để làm gì?


110

Tôi vừa nâng cấp lên Visual Studio 2010 và MVC 2.0 và tôi nhận thấy Web.config có hai tệp bổ sung được đính kèm vào nó? Các tệp này có được sử dụng để chỉ định gỡ lỗi và phát hành các cài đặt cụ thể, vì vậy bạn không làm lộn xộn Web.config chính không?

Có hợp lý không khi đặt một chuỗi kết nối trong tệp Web.config gốc nếu tôi có một chuỗi cục bộ và từ xa trong phần gỡ lỗi và phát hành Web.configs tương ứng?

Cảm ơn!

Câu trả lời:


97

Đó là tính năng chuyển đổi Web.config mới của Visual Studio 2010. Thông tin thêm tại đây .


Biên tập:

Các tệp này có được sử dụng để chỉ định gỡ lỗi và phát hành các cài đặt cụ thể, để bạn không làm lộn xộn web.config chính không?

Nó không giới hạn ở ba tệp, bạn có thể (về lý thuyết) có nhiều tệp như bạn có môi trường. Web.config "cấp cao nhất" cung cấp một mẫu cấu hình web của bạn. Các tệp bên dưới nó cung cấp các giá trị thay thế cụ thể cho môi trường đó (như nếu bạn có các chuỗi kết nối khác nhau cho cục bộ / giai đoạn / thử nghiệm / bất cứ điều gì).

Có hợp lý không khi đặt một chuỗi kết nối trong tệp web.config gốc nếu tôi có một chuỗi cục bộ và từ xa trong trình gỡ lỗi và phát hành web.configs tương ứng.

Nó sẽ chỉ có ý nghĩa nếu nó không thay đổi giữa các môi trường. Có vẻ như trong trường hợp của bạn, nó làm như vậy, trong trường hợp của bạn là không, sẽ không hợp lý nếu để nó trong Web.config.


12
Tính năng này chỉ còn một nửa, thậm chí 4 năm sau! Nó chỉ hoạt động khi triển khai tới các gói azure / xuất bản. Dưới đây là một chủ đề thú vị: forums.asp.net/t/1532038.aspx
Nick

12

Đây là các tệp biến đổi Web.config. Từ Triển khai Web ASP.NET sử dụng Visual Studio: Chuyển đổi tệp Web.config :

Có hai cách để tự động hóa quá trình thay đổi cài đặt tệp Web.config: biến đổi Web.config và tham số Triển khai Web. Tệp chuyển đổi Web.config chứa đánh dấu XML chỉ định cách thay đổi tệp Web.config khi nó được triển khai. Bạn có thể chỉ định các thay đổi khác nhau cho các cấu hình xây dựng cụ thể và cho các cấu hình xuất bản cụ thể. Cấu hình bản dựng mặc định là Gỡ lỗi và Phát hành, đồng thời bạn có thể tạo các cấu hình bản dựng tùy chỉnh. Một hồ sơ xuất bản thường tương ứng với một môi trường đích.


1

Trong trường hợp bất kỳ ai quan tâm, đây là một cái gì đó tôi đã viết lên để có một chuỗi kết nối động cho mỗi môi trường. Tôi muốn triển khai mã cho bất kỳ môi trường nào (Dev, Test, Pre-Prod, Prod ...) mà không phải lo lắng về việc thay đổi chuỗi kết nối. Tôi thực sự không thể tìm ra cách tốt để thực hiện điều này với Asp.Net MVC 4, vì vậy tôi đã nghĩ ra cách của riêng mình để dựa vào tệp thuộc tính cho mỗi môi trường.

Có thể có một giải pháp tốt hơn, tôi đến từ nền tảng Wicket / Java và gần đây đã bắt đầu phát triển với MVC 4, vì vậy, có thể có một giải pháp tốt hơn. Nhưng đây là một liên kết đến câu hỏi và câu trả lời của tôi cho một chuỗi kết nối động:

Chuỗi kết nối động Asp.net MVC 4


-3

Đó là điều cần thiết từ lâu ở VS. Thật không may, dường như có vấn đề với việc triển khai. Ví dụ: hãy xem xét kịch bản này (VS.2010 Ultimate, tất cả SP):

Web.Config

  • Không có phần chuỗi kết nối
  • Người dùng / Vai trò thành viên đầy đủ / v.v. Cấu hình nhà cung cấp bằng cách sử dụng connectStringName = "test"

Web.Release.Config

  • Không có cấu hình thành viên (đã được chỉ định trong web.config chính)
  • Phần connectionStrings bao gồm CS có tên "test"

Web.Debug.Config

  • Không có cấu hình thành viên (đã được chỉ định trong web.config chính)
  • Phần connectionStrings bao gồm CS có tên "test"

Khi thực thi ứng dụng gặp lỗi sau:

Không tìm thấy tên kết nối 'kiểm tra' trong cấu hình ứng dụng hoặc chuỗi kết nối trống.

Nói cách khác, vì các phần tử chuỗi kết nối nằm trong tệp trình thiết kế Phát hành / Gỡ lỗi và được các phần tử cấu hình trong tệp chính (Web.config) sử dụng nên không thể giải quyết được.


5
Công bằng mà nói, nếu bạn có một chuỗi kết nối có tên testtrong cả tệp cấu hình gỡ lỗi và phát hành, thì nó thực sự chỉ nên nằm trong web.config chính với các phần thích hợp được tạo mẫu. Như vậy, bạn đang sao chép mã, đó là điều mà mẫu phải giải quyết cho bạn.
R0MANARMY

3
-1: Bài đăng rất cũ này là một sự hiểu sai hoàn toàn về cách sử dụng chuyển đổi cấu hình web. 1 Nó không thực sự là một câu trả lời (chỉ là một lời phàn nàn không chính xác) và 2 nó không phải là sự hợp nhất các yếu tố đơn giản như ngụ ý ở đây. Bạn phải có xsltcác lệnh thay thế rõ ràng . Làm rất tốt khi nhận được 5 lượt ủng hộ cho một điều gì đó làm tăng thêm sự nhầm lẫn về các tệp chuyển đổi này :)
Gone Coding
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.