Tôi đang viết một dịch vụ windows trong C# để sinh ra nhiều phiên bản của một ứng dụng khác mà tôi đang viết. Có khả năng ứng dụng có thể được cài đặt bất cứ nơi nào trên máy. Cách tốt nhất để cho dịch vụ biết vị trí của ứng dụng là gì?Cách thích hợp để xác định vị trí của ứng dụng là gì?
Trả lời
Nếu bạn có nghĩa là dịch vụ bắt đầu một khác nhau ứng dụng, sau đó; tùy chọn:
- định cấu hình dịch vụ bằng tệp cấu hình; đặt đường dẫn trong đó
- đặt một cái gì đó trong registry trong khi cài đặt
- sử dụng một cái gì đó giống như COM/COM + đăng ký
- xem xét GAC nếu ứng dụng khác là NET (mặc dù tôi không phải là một fan hâm mộ. ..)
- biến môi trường?
Cá nhân, tôi thích tùy chọn tệp cấu hình; nó là đơn giản và dễ dàng để duy trì, và cho phép nhiều riêng biệt (side-by-side) dịch vụ và ứng dụng cài đặt
using System.IO;
using System.Windows.Forms;
string appPath = Path.GetDirectoryName(Application.ExecutablePath)
Thats cho một ứng dụng (ở trên).
cho một dự án asp.net:
using System.Web;
HttpContext.Current.Server.MapPath("place arguments here");
Điều này sẽ không hoạt động trong dịch vụ không có biểu mẫu – Treb
Dịch vụ có thể tham chiếu các biểu mẫu cửa sổ mà không gặp sự cố. Các dòng trên không thực sự sử dụng bất kỳ hình thức, và nên được OK. Nhưng có những cách dễ dàng hơn để có được codebase! –
Xin lỗi, hiểu nhầm câu hỏi - Tôi nghĩ anh ấy muốn có được vị trí của dịch vụ. – Treb
Nếu bạn cần phải xác định vị trí thư mục dịch vụ của bạn được cài đặt để bạn có thể sử dụng đoạn mã sau
this.GetType().Assembly.Location
Nếu bạn cần xác định vị trí thư mục một số ứng dụng khác được cài đặt vào bạn nên thực hiện một yêu cầu đến cửa sổ cài đặt
[DllImport("MSI.DLL", CharSet = CharSet.Auto)]
private static extern UInt32 MsiGetComponentPath(
string szProduct,
string szComponent,
StringBuilder lpPathBuf,
ref int pcchBuf);
private static string GetComponentPath(string product, string component)
{
int pathLength = 1024;
StringBuilder path = new StringBuilder(pathLength);
MsiGetComponentPath(product, component, path, ref pathLength);
return path.ToString();
}
System.Environment.CurrentDirectory
Viết biến đăng ký trong khi cài đặt, theo cách này khi phân phối nâng cấp, bạn có thể đọc lại giá trị được viết trước đây và mặc định cho người dùng đã chọn thư mục trước đó.
- 1. Cách thích hợp để định dạng thẻ JavaScript là gì?
- 2. Xác định vị trí của Ruby Gems
- 3. Cách thích hợp để lưu trữ dữ liệu conf của ứng dụng trong Java là gì?
- 4. Cách xác định vị trí của UIBarButtonItem trong UIToolbar?
- 5. Thực hành tốt nhất cho vị trí của tệp cấu hình ứng dụng Java là gì?
- 6. Vị trí của một chuỗi là gì?
- 7. Cách thích hợp để đóng ứng dụng WinForms theo cách lập trình sau một thời gian nhất định là gì?
- 8. Việc sử dụng thích hợp của EnsureChildControls() là gì?
- 9. Vị trí mặc định cho kho khóa/kho lưu trữ của các ứng dụng Java là gì?
- 10. Cách tốt nhất để xác định cổng ứng dụng đang sử dụng là gì?
- 11. Cách thích hợp để giảm thiểu tối đa khay ứng dụng C# WinForms là gì?
- 12. Phương pháp tốt nhất để định vị vị trí cho dữ liệu địa lý là gì?
- 13. Làm thế nào để xác định vị trí người dùng với tờ rơi xác định vị trí?
- 14. Làm thế nào để xác định vị trí vị trí đệm trong emacs
- 15. Cách thích hợp để thụt lề Erlang là gì?
- 16. Độ chính xác thực tế của gia tốc điện thoại khi được sử dụng để định vị là gì?
- 17. Cách thích hợp để bao bọc [NSString stringWithFormat:] là gì?
- 18. Cách thích hợp để sử dụng jQuery kết hợp với 'sử dụng nghiêm ngặt' là gì?
- 19. Sử dụng lệnh grep và xác định vị trí
- 20. Cách thích hợp để phát hiện định hướng giao diện khi khởi chạy là gì?
- 21. Cách thích hợp để di chuyển UIDocument đến vị trí mới trên hệ thống tệp
- 22. Cách thích hợp để sử dụng PreparedStatementCreator của Spring JDBC là gì?
- 23. Giá trị mặc định của thuộc tính "vị trí" của một DIV là gì?
- 24. Cách sử dụng của C++ xây dựng "vị trí mới" là gì?
- 25. Cách thích hợp để chuyển hướng lại là gì?
- 26. Cách/vị trí xác định giá trị mặc định của hộp thư đến?
- 27. Làm cách nào để xác định chính xác vị trí của khách truy cập vào trang web của tôi?
- 28. Cách xác định vị trí cấu hình Log4J 2.x?
- 29. Cách thích hợp để thực hiện mã hóa xác thực trong Java là gì?
- 30. Cách thích hợp để sử dụng phản chiếu để khởi tạo các đối tượng của các lớp không xác định khi chạy là gì?
Tôi muốn biết nhiều hơn về cách sử dụng gấc trong trường hợp này, mặc dù tôi nhận thức được những mối nguy hiểm như thế nào sẽ làm việc này? những gì về tập tin cấu hình, nó sẽ được nhúng? nếu nó không được nhúng ở đâu thì cấu hình cho một dịch vụ tồn tại? – Firoso
Tôi có thể sẽ kết thúc với phương pháp tập tin cấu hình, nhưng tôi cũng muốn biết thêm về cách sử dụng GAC theo cách này là tốt. – MGSoto