2011-02-03 28 views
14

Tôi có hai dự án: Dự ánCách đọc app.config từ một assembly khác?

  • Console (test.exe)
  • Class Library dự án (Test.Data.dll)

Class Library Dự án của tôi chứa một tập tin app.config.

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <connectionStrings> 
    <add name="TestEntities" connectionString="metadata=res://*/DBNews.csdl|res://*/DBNews.ssdl|res://*/DBNews.msl;provider=System.Data.SqlClient;provider connection string=&quot;{0}&quot;" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 
</configuration> 

Từ dự án điều khiển tôi muốn truy cập các thiết lập từ Class Library, vì vậy tôi đã cố gắng:

var config = ConfigurationManager.OpenExeConfiguration("Test.Data.dll"); 
config.ConnectionStrings.ConnectionStrings[0].Name; // LocalSqlServer 
// seems to be the wrong assembly. 

Và:

var config = ConfigurationManager.OpenExeConfiguration("Test.Data.dll.config"); 
// invalid exePath 

Làm thế nào tôi có thể truy cập của DLL app.config?

+0

Câu trả lời đúng được cung cấp tại đây. Nó hoạt động http://stackoverflow.com/questions/53545/get-the-app-config-of-another-exe –

Trả lời

10

DLL không có app.config riêng khi chạy. App.config chỉ có cho trình thiết kế Entity Framework.

Trong khi thực hiện, DLL sẽ cố gắng đọc các giá trị từ tệp app.config của Ứng dụng. Đối với các kết nối Entity Framework, điều đó có nghĩa là bạn phải sao chép thông tin kết nối vào ứng dụng của app.config.

5

.NET sẽ chỉ tải tối đa một tệp App.config cho một hội đồng thi hành. Nếu các hội đồng vệ tinh của bạn có các tệp App.config, chúng sẽ không được phân tích bởi hội đồng thi hành.

Để nhận các cài đặt từ App.config của hội đồng vệ tinh, bạn phải di chuyển (sao chép) các cài đặt đó vào App.config của assembly thực thi của bạn.

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