2009-12-14 30 views
9

Tôi có một dự án thư viện lớp C# sử dụng một dll COM được đăng ký trên hệ thống. Bây giờ tôi muốn triển khai dll COM như là một tập hợp cạnh nhau, vì vậy tôi không phải đăng ký nó, hoặc can thiệp vào các ứng dụng khác có thể sử dụng một phiên bản khác của dll.Làm cách nào để thêm tệp kê khai vào tệp DLL .NET?

Tôi đã thêm app.manifest vào dự án C# bằng cách sử dụng menu thêm mục mới, nhưng tôi không chắc phải làm gì tiếp theo. Trong thuộc tính dự án/ứng dụng/biểu tượng và tệp kê khai, trình đơn thả xuống tệp kê khai bị tắt. Tôi không biết làm thế nào để vượt qua điều đó. Tôi đã thêm tệp kê khai, tại sao tệp đó không có trong danh sách thả xuống?

Tôi có tệp kê khai cho tệp dll COM hoạt động với các ứng dụng C++ và tôi nghĩ rằng tôi giữ nguyên như vậy. Bây giờ tôi cần biết cách chỉnh sửa app.manifest cho dự án C#. Tôi sẽ bắt đầu bằng cách thêm một yếu tố phụ thuộc tốt đã biết. Nhưng tôi cần một hướng dẫn về cách thiết lập này, tôi không thấy nó được bao phủ ở bất cứ đâu.

Tôi đang sử dụng VS2008

+1

Tôi thấy rằng hộp kê khai được bật cho dự án exe. Có một dự án thư viện lớp không bao giờ có một biểu hiện? –

Trả lời

10

Bạn chắc chắn có thể nhúng tệp kê khai vào tệp .net dll. Nội dung của một biểu hiện ứng dụng không phải tất cả đều áp dụng cho một assembly, nhưng một số thì có. Ví dụ, các mục UAC không có ý nghĩa đối với một tệp kê khai thành phần, nhưng assemblyIdentity thực hiện.

Sử dụng công cụ mt.exe, bạn có thể nhúng một biểu hiện thành một dll:

Nhúng:

mt.exe -manifest filename.dll.manifest -outputresource:filename.dll;#2 

Extract:

mt.exe -inputresource:filename.dll;#2 -out:filename.dll.extracted.manifest 

Dưới đây là liên kết trên thông tin có liên quan:

Ví dụ nhúng dll khác: http://msdn.microsoft.com/en-us/library/ms235591(v=VS.100).aspx

Hướng dẫn SxS: http://msdn.microsoft.com/en-us/library/ms973915.aspx

2

Trong hầu hết các ứng dụng, một biểu hiện thường áp dụng cho EXEs/ứng dụng máy chủ - vì đây là mức mà ai hiểu thế nào tất cả các hội đồng phụ thuộc và khả năng của mình lưới với nhau.

Ví dụ, trong trường hợp thiết lập điểm đánh dấu UAC thông qua phần tử trustinfo/security/requestedPrivileges/requestedExecutionLevel, trường hợp của một hội đồng phụ thuộc hợp pháp có thể nói "Tôi nói tất cả chúng ta hiểu về UAC" không làm cho giác quan.

+0

Có, tôi đã phát hiện ra điều đó. Bạn có biết bất cứ điều gì về bộ nhớ đệm biểu hiện bởi hệ điều hành? –

+0

Xin lỗi, không biết gì về bộ nhớ đệm (OTTOMH đoán: không phải tất cả chỉ đọc tài nguyên của EXE khi tải và mọi bộ nhớ đệm sẽ trong suốt - tôi đoán bạn sẽ không hỏi nếu nó đơn giản!) –

+2

Điều này không đúng . Các tệp DLL có thể chứa và kích hoạt các tệp kê khai. Nó chỉ cần được thực hiện bằng tay bằng cách sử dụng API ngữ cảnh kích hoạt. –

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