2013-05-31 35 views
5

Ứng dụng của chúng tôi hiện tại là sự kết hợp của các ứng dụng C++ cũ, ứng dụng C# .NET và nhiều loại tệp DLL và các tệp hỗ trợ khác. Gần đây, chúng tôi đã gặp sự cố khi chúng tôi cần thay đổi cài đặt xuất hiện trong giao diện người dùng Windows trong Tùy chọn Internet; nó được gọi là generatePublisherEvidence.Làm thế nào tôi có thể làm cho tất cả các dự án trong một giải pháp sử dụng một tệp cấu hình ứng dụng duy nhất?

Vì vậy, câu hỏi của tôi thực sự là hai lần:

  1. Có cách nào tốt hơn để đối phó với điều này thiết lập khác hơn bằng cách sử dụng một tập tin trong thư mục ứng dụng của chúng tôi đặt tên myEXE.exe.config? Dưới đây là nội dung của tập tin, bằng cách này:

    <?xml version="1.0" encoding="utf-8"?> 
    <configuration> 
        <runtime> 
         <generatePublisherEvidence enabled="false"/> 
        </runtime> 
    </configuration> 
    
  2. Nếu file .exe.config là sự lựa chọn thích hợp, sau đó là nó có thể tránh được việc phải bao gồm một trong những cho mỗi EXE trong ứng dụng của tôi (chúng tôi có 18 của họ)? Nói cách khác, có một số cơ chế tương đương với một tệp *.exe.config mà tất cả chúng đều tìm kiếm không? Một thiết lập trong mọi dự án có lẽ?

+1

Related: http://stackoverflow.com/questions/15181969/common-app-config-for-multiple-applications –

+0

bạn có thể đặt nó trong tệp machine.config. Điều này sẽ ảnh hưởng đến tất cả các ứng dụng Net đang chạy trên máy đó. – Liam

+1

@Liam Và điều đó sẽ rất tệ vì đây là vấn đề về Chứng chỉ Windows. Biểu hiện là một sự chậm trễ dài xảy ra khi EXE được khởi chạy khi 'generatePublisherEvidence' là' true'. Chúng tôi không ký EXE của chúng tôi, vì vậy chúng tôi cần nó là 'sai'. – DonBoitnott

Trả lời

0

Chỉ cần để cho một câu trả lời này, chúng ta đã chọn ở lại với những gì chúng ta đã và đang làm. Có vẻ như không phải là một lựa chọn dễ dàng/tốt hơn cho nhu cầu đơn giản của chúng tôi.

0

Tôi nghĩ rằng cách dễ nhất là như George đề cập đến nó (Common app.config for multiple applications), nhưng nếu ứng dụng của bạn cần phải viết vào tập tin cấu hình mà khóa lỗi có thể thực sự là một vấn đề. Ví dụ bạn đưa ra chỉ có một khóa, nhưng tôi cho rằng nó sẽ nhanh hơn nếu bạn muốn sử dụng nó làm cấu hình trung tâm cho tất cả các ứng dụng thuộc về nhau.

Tất cả phụ thuộc vào tần suất bạn đọc/ghi cấu hình - ứng dụng của bạn thường xuyên và đồng thời hơn, điều quan trọng hơn là đồng bộ hóa quyền truy cập. Thông thường, các ứng dụng có xu hướng đọc các giá trị cấu hình một lần và có bộ nhớ đệm nó, nhưng kể từ khi bạn không nói rõ rằng tôi sẽ đưa ra một số ý tưởng làm thế nào bạn có thể đối phó với nó:

  1. Để tránh vấn đề đồng thời bạn có thể viết một cửa sổ hoặc dịch vụ web ghi vào/đọc từ tệp cấu hình trung tâm được đồng bộ hóa với các cơ chế khóa và các ứng dụng của bạn đang sử dụng hợp đồng WCF để đọc/ghi các giá trị. Nỗ lực thực hiện cho việc này lớn hơn đáng kể so với tùy chọn 2. Nếu bạn muốn đọc thêm về tùy chọn này, bạn có thể tìm thấy một bài viết here.

  2. Hoặc bạn có thể sử dụng cơ sở dữ liệu SQL. do đó không có vấn đề như vậy. Bạn có thể sử dụng EF với LINQ để dễ dàng đọc/sửa đổi các giá trị. Ưu điểm là bạn có thể sử dụng các lớp học POCO - cho một sự khởi đầu nhanh chóng như thế nào để làm điều đó hãy nhìn here.

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