Tôi có một tệp dll .NET cần đọc cài đặt cấu hình từ tệp cấu hình của nó. Thông thường, tệp cấu hình được đặt trong cùng thư mục với tệp DLL. Nhưng làm thế nào để tôi đọc các tập tin cấu hình nếu DLL được GAC'ed, bởi vì tôi có thể đặt chỉ các DLL trong GAC, và không phải nó là tập tin cấu hình.Định cấu hình tệp cho các hội đồng trong GAC
Trả lời
Người dùng có cần định cấu hình Dll không? Nếu vậy, thì DLL phải sử dụng các thiết lập cấu hình từ tệp app.config, không phải là cấu hình riêng của nó. Tệp app.config phải được lưu trữ trong cùng thư mục với ứng dụng. Nếu không, sau đó bạn có thể đi một vài cách khác nhau. Bạn có thể thay đổi tệp machine.config để Dll của bạn có thể tìm thấy chúng ở đó. Tôi sẽ không làm điều này. Ngoài ra, bạn có thể lưu cấu hình trong một lớp cài đặt. Chúng có thể được ghi đè thông qua cấu hình, nhưng mặc định của bạn sẽ được đặt trong mã được tạo cho lớp cài đặt thông qua các thuộc tính và do đó việc thiếu tệp cấu hình sẽ không ảnh hưởng đến Dll của bạn khi các giá trị mặc định là tất cả bắt buộc.
Tôi đồng ý với tvanfosson dll Gac'ed sẽ đọc từ đường dẫn của ứng dụng. Nhưng bạn cũng có thể thông báo cho dll đó là con đường theo cách này:
System.Configuration.ExeConfigurationFileMap fileMap = new System.Configuration.ExeConfigurationFileMap();
fileMap.ExeConfigFilename = "THE PATH TO THE CONFIG";
System.Configuration.Configuration cfg =
System.Configuration.ConfigurationManager.OpenMappedExeConfiguration(fileMap, System.Configuration.ConfigurationUserLevel.None);
string thevalue=cfg.AppSettings.Settings[variable].Value;
Bạn có thể tận dụng AppDomain.CurrentDomain.BaseDirectory kể từ khi DLL sẽ không được thực hiện bởi bản thân bạn chỉ cần để có được thực thi Tập tin thư mục.
Cái gì như:
var appDomain = AppDomain.CurrentDomain.BaseDirectory;
string sFileName = appDomain.Replace("\\bin\\Debug", "");
sFileName = sFileName + "Config\\config.xml";
Xin lỗi vì đây là lần đầu tiên tôi trả lời ở đây .. mã không được định dạng tốt :( –
- 1. liệt kê các hội đồng trong GAC
- 2. Lặp lại cấu hình trên các hội đồng tham chiếu
- 3. Tham khảo các hội đồng khác nhau trong các cấu hình khác nhau
- 4. Làm thế nào để xác định vị trí chính xác của một hội đồng trong một tập tin cấu hình
- 5. Định cấu hình Apache cho các tệp tải lên lớn
- 6. Định cấu hình tên tệp cho PHPUnit
- 7. Khi nào tôi nên triển khai các hội đồng của mình vào GAC?
- 8. 'Bạn phải thêm một tham chiếu đến Microsoft.Practices.EnterpriseLibrary.Common' mặc dù hội đồng nằm trong GAC
- 9. .net 4 một phần tin tưởng một hội đồng từ GAC
- 10. Xung đột hội đồng trong Newtonsoft.Json
- 11. Hội GAC Thiếu trong hộp thoại Thêm Tham chiếu
- 12. Sử dụng WiX để đặt một hội đồng vào cả GAC và Đường dẫn Cài đặt
- 13. Định dạng tệp cấu hình
- 14. log4net - định cấu hình bằng nhiều tệp cấu hình
- 15. Định cấu hình mã hóa cho các loại tệp khác nhau trong maven?
- 16. Chỉ định tệp cấu hình tùy chỉnh cho CKEditor
- 17. Liệt kê tất cả các hội đồng .NET có sẵn
- 18. Làm thế nào để xác định nơi Assembly.Load() tìm kiếm cho hội đồng?
- 19. Làm cách nào để tôi có thể cấu hình các Hội đồng đã ký với VS 2010 hoặc VS 2013
- 20. Hội đồng tải trước
- 21. Nhận các hội đồng phụ thuộc?
- 22. Các tệp cấu hình FitNesse
- 23. Có cách nào để chỉ định nhiều tệp cấu hình ứng dụng trong một tệp dự án đơn vị không?
- 24. Định cấu hình Jekyll cho các trang GITHUB PROJECT
- 25. Silverlight xác định hội đồng là "Silverlight" như thế nào?
- 26. Không thể gỡ cài đặt một hội từ GAC?
- 27. Mã định danh cho cấu hình win64 trong Qmake
- 28. GAC dường như chứa hai hội đồng có cùng tên, phiên bản và mã thông báo khóa công khai
- 29. Cập nhật các tập tin GAC
- 30. định cấu hình kiến cho scala
tvanfosson đã có một câu trả lời tốt nhưng tôi nghĩ rằng đây là một câu trả lời phù hợp hơn. – Keith