2010-06-04 63 views
6

Chúng tôi là một nhóm nhỏ, làm việc trên một dự án web asp.net, cũng như dịch vụ, cả hai dự án đều phụ thuộc vào một thư viện lớp được chia sẻ.Cài đặt cấu hình khác nhau cho mỗi nhà phát triển cho thư viện lớp C#

Chúng tôi muốn có cài đặt thư viện lớp khác nhau cho mỗi nhà phát triển (và sau này cho sản xuất). Trong cài đặt được bao gồm thông tin nhạy cảm, chẳng hạn như mật khẩu, cũng như tên máy chủ.

Chúng tôi nên chỉ định các cài đặt này như thế nào?

Trừ khi tôi sai, cài đặt web.config/application không đủ tốt vì chúng không hoạt động đối với thư viện lớp dùng chung.

ps: Ngoài ra, một số biến phải được liên kết tĩnh và phần còn lại (chẳng hạn như kết nối) nên động.

+1

Bạn đã đưa ra giải pháp như thế nào? Bạn đang sử dụng phần mềm điều khiển nguồn nào? –

+0

Chúng tôi đang sử dụng svn. Tôi không chắc chắn về ý nghĩa của giải pháp, và về cơ bản, chúng tôi có nhiều dự án, hầu hết là thư viện lớp, một thư viện chính mà các dự án: dịch vụ và dự án web, phụ thuộc vào. – user145100

+0

Đây là một chút tương tự như những gì chúng tôi đã tìm thấy tốt nhất để sử dụng: (tốt hơn sau đó những gì đã được thảo luận trong chủ đề này) http://stackoverflow.com/questions/236412/connection-string-hell-in-net- linq-sql-asp-net – user145100

Trả lời

2

Tệp web.config app.config được đọc từ bất kỳ trang web/ứng dụng nào bạn đang chạy. I.E., Bất kỳ tệp cài đặt ứng dụng nào trong thư viện lớp đều không được sử dụng. ví dụ. bất kỳ tham chiếu đến ConfigurationManager.ConnectionStrings ConfigurationManager.AppSettings trong thư viện lớp của bạn sẽ sử dụng bất kỳ web.config/app.config được định nghĩa trong ứng dụng đang sử dụng thư viện lớp và không phải bất kỳ .config bạn có thể đã thiết lập trong thư viện lớp.

Cách dễ nhất để quản lý cài đặt khác nhau cho mỗi nhà phát triển và sản xuất là để cấu hình của bạn được lưu trữ trong một tệp khác, ví dụ:

<appSettings configSource="Web.appSettings.dev.config"/> 

Mỗi dev có Web.appSettings.dev.config riêng không có trong điều khiển nguồn. Khi sản xuất bạn chỉ cần thay đổi để:

<appSettings configSource="Web.appSettings.live.config"/> 

Bạn chỉ cần phải chắc chắn rằng bạn có một số loại mẫu Web.appSettings.template.config trong svn mà là bậc thầy nhưng không có bất kỳ cài đặt trong đó và bằng tay quản lý đảm bảo rằng bất kỳ khóa mới hoặc chuỗi kết nối nào được thêm vào mẫu cũng được thêm vào từng tệp nhà phát triển và tệp sản xuất.

+0

Tệp "Web.appSettings.dev.config" có được đọc luôn với tên tệp này không? như tôi đã thử thêm một tập tin tài nguyên cài đặt trước, và có vẻ như các thư viện lớp không đọc chúng. – user145100

+0

Ý của bạn là "tệp tài nguyên cài đặt", tôi đang nói về web.config và tệp app.config và cách di chuyển phần khác nhau như phần appSettings hoặc phần kết nối thành các tệp riêng biệt. Các thư viện lớp đọc cài đặt của chúng từ bất kỳ ứng dụng nào đang sử dụng chúng. –

+0

Vâng, khi tôi chạy appname.exe của mình, nó chỉ đọc appname.exe.config và không có tệp nào khác. Tôi không muốn có nhiều tệp cài đặt: appname1.exe.config, appname2.exe.config, web.config. – user145100

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