2008-12-11 37 views
20

Tôi cần phải chỉ định đường dẫn đến dll được tham chiếu bằng cách lắp ráp tệp .config. Vấn đề là đường dẫn có thể được tìm thấy trong env. biến. Có thể sử dụng một số loại% DLLPATH% macro trong tệp .config không?Sử dụng biến môi trường cho tệp .config trong .NET

Trả lời

5

Đây có phải là mục nhập cấu hình mà bạn đang đọc hoặc đang đọc .NET không? Nếu bạn tự mình đọc, bạn có thể tự mình thay thế thích hợp (sử dụng Environment.ExpandEnvironmentVariables để thực hiện nhiều hoặc Environment.GetEnvironmentVariable nếu bạn muốn chọn lọc hơn).

Nếu đó là .NET sẽ đọc, tôi không biết cách nào để mở rộng biến môi trường. Tệp cấu hình có nằm trong tầm kiểm soát của bạn không? Bạn có thể viết lại nó không?

Thực tế, ngay cả khi bạn có thể thực hiện thay thế, đó có thực sự là những gì bạn muốn làm không? Nếu bạn cần phải xác định đường dẫn đầy đủ đến một DLL, tôi nghi ngờ bạn sẽ cần phải tìm nó qua DLLPATH (kiểm tra sự hiện diện của nó trong mỗi phần của đường dẫn) và sau đó trừ% DLLPATH% \ Foo.dll bằng đầy đủ đường dẫn đến Foo.dll.

+0

Cảm ơn Jon. Tôi không chắc chắn tôi nhớ vấn đề chính xác nữa, nhưng như tôi nhớ lại, những gì tôi muốn là để xác định trong đường dẫn tập tin .config nơi NET binder nên tìm assembly tham chiếu. Nếu tôi đúng, chỉ có thể chỉ định đường dẫn tương đối trong các thư mục con từ thư mục hiện tại, không phải đường dẫn tuyệt đối đầy đủ. – Jox

27

Có, điều đó có thể! Giả sử bạn có một cái gì đó như thế trong cấu hình của bạn:

<configuration> 
    <appSettings> 
    <add key="mypath" value="%DLLPATH%\foo\bar"/> 
    </appSettings> 
</configuration> 

Sau đó, bạn có thể dễ dàng có được những con đường với:

var pathFromConfig = ConfigurationManager.AppSettings["mypath"]; 
var expandedPath = Environment.ExpandEnvironmentVariables(pathFromConfig); 

ExpandEnvironmentVariables(string s) làm sự kỳ diệu bằng cách thay thế tất cả các biến môi trường trong một chuỗi với giá trị hiện tại của họ.

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