2009-08-24 36 views
6

Thuộc tính Environment.CurrentDirectory luôn trả về đường dẫn của thư mục hệ thống thay vì thư mục ứng dụng của tôi. Trong PC của đồng nghiệp, nó trả về thư mục ứng dụng.Environment.CurrentDirectory trong C# .NET

Sự cố là gì? Làm thế nào tôi có thể giải quyết nó?

Các mã sau đây được làm việc cho tôi

ePCRSettings = XMLParser.XmlParser.Deserialize<PCRGeneratorSettings>(string.Format("{0}\\ePCRPDFSettings.xml", AppDomain.CurrentDomain.BaseDirectory)); 

AppDomain.CurrentDomain.BaseDirectory - Returns the directory E:\MyApplications\. 

Các mã sau đây không được làm việc cho tôi

ePCRSettings = XMLParser.XmlParser.Deserialize<PCRGeneratorSettings>(string.Format("{0}\\ePCRPDFSettings.xml", Environment.CurrentDirectory)); 

Environment.CurrentDirectory - Returns c:\windows\system32. 

tập tin .dll này có thể được sử dụng trong VB 6 và các ứng dụng ASP.NET

+0

Thêm một số thông tin khác ... có thể là đoạn mã và giải thích những gì bạn đang cố gắng làm sẽ giúp bạn nhận được câu trả lời. – Gishu

+0

Đây có phải là Ứng dụng Windows Forms không? – Jehof

+0

Đây là thư viện lớp học. Nhưng có thể được sử dụng trong các ứng dụng VB 6 và ASP.NET – gopal

Trả lời

1

Tôi nghi ngờ rằng điều này có thể liên quan đến id người dùng hiện tại mà ứng dụng đang chạy, ví dụ: nếu bạn đang chạy ứng dụng trong phiên người dùng (ví dụ: gỡ lỗi trong VS) thì có thể trở lại thư mục hiện tại của bạn, nhưng nếu bạn đang chạy nó dưới IIS thì đây có thể là lý do tại sao nó được mặc định vào thư mục hệ thống?

3

Bạn không nên sử dụng giá trị Environment.CurrentDirectory làm cơ sở để tra cứu tệp vì nó có thể thay đổi và có thể không luôn nằm trong tầm kiểm soát của bạn. ví dụ. Tệp Lưu dưới dạng một thư mục khác có thể thay đổi giá trị 'thư mục hiện tại'. Như bạn có thể thấy nó có thể mang lại kết quả không thể đoán trước.

Sử dụng giá trị mà bạn có thể kiểm soát tốt hơn. ví dụ. một giá trị ResourcesFolderPath trong tệp cấu hình (xml?) được cập nhật khi bạn cài đặt ứng dụng của mình.

10

thiết lập thư mục hiện

Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory); //or set executing Assembly location path in param 

Environment.CurrentDirectory //now returns your app path 
5

Sử dụng

System.IO.Path.GetDirectoryName (System.Reflection.Assembly.GetEntryAssembly() Location.);