2009-01-06 28 views
13

Chúng tôi đang sử dụng .NET Assembly DLL của chúng tôi trong native C++ thông qua COM (CCW). Bất cứ khi nào tôi tạo phiên bản mới của DLL của mình, tôi phải gửi hai tệp (.dll và .tlb tương ứng) cho nhân viên đang sử dụng nó trong mã của họ.Làm thế nào để nhúng .tlb dưới dạng tệp tài nguyên vào .NET Assembly DLL?

Có thể nhúng tệp .tlb dưới dạng tài nguyên trong tệp DLL .NET không?

+1

Các bước tương tự như câu trả lời bên dưới, nhưng từ MSDN: http://msdn.microsoft.com/en-us/library/ww9a897z.aspx – yzorg

Trả lời

11

Nó không phải là chính xác đơn giản để làm điều này với Visual Studio.NET, nhưng nó có thể được thực hiện. Ở cấp độ cơ bản, những gì bạn phải làm là:

  1. Tạo tệp TLB của bạn, ví dụ: "YourLibrary.tlb".

  2. Tạo tệp tập lệnh tài nguyên Win32 được gọi là "YourLibrary.rc" bằng trình soạn thảo văn bản (chẳng hạn như Notepad hoặc File/New/File .../Text File trong Visual Studio).

  3. Trong tập tin kịch bản, gõ văn bản sau đây đúng nguyên văn (nhưng thay tên thực của bạn TLB tập tin của khóa học):

    1 typelib "YourLibrary.tlb"

  4. Lưu tập tin kịch bản với cùng thư mục dưới dạng tệp TLB.

  5. Từ một Visual Studio Prompt Command, thay đổi vào thư mục với tập tin kịch bản và biên dịch nó bằng cách sử dụng lệnh sau:

    rc YourLibrary.rc

    này sẽ tạo ra một tập tin tài nguyên Win32 trong cùng thư mục có tên "YourLibrary.res".

  6. Trong Visual Studio, nhấp chuột phải vào nút dự án (ví dụ: "YourLibrary") trong Solution Explorer và chọn Thuộc tính.

  7. Trên tab Application, dưới "Tài nguyên", chọn "Resource File" tùy chọn và duyệt đến "YourLibrary.res" tập tin từ bước 5.

  8. Lưu và xây dựng lại dự án.

TLB giờ đây sẽ được nhúng dưới dạng tài nguyên trong DLL sao cho các ứng dụng COM khác có thể đọc được.

Nếu bạn tái tạo tệp TLB sau này, bạn sẽ cần phải lặp lại bước 5 để biên dịch lại tệp tài nguyên và bước 8 để nhúng phiên bản mới trong DLL.

Tất cả những gì đã nói, bạn có thể tự động hóa một số điều này với Sự kiện xây dựng hoặc bằng cách đặt mục tiêu MSBuild tùy chỉnh vào tệp dự án của bạn, nhưng đó là một cuộc thảo luận toàn bộ khác.

+0

Dựa trên câu trả lời của bạn, tôi đã soạn một sự kiện Post-Build để tự động hóa tòa nhà và nhúng .tlb: http://thoughtandcode.blogspot.ru/2015/05/sole-com-for-you-chapter-3.html – Mikhail

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