2010-03-04 38 views
18

Câu hỏi: Tôi có một dll .NET mà tôi sử dụng từ một chương trình C++. Bây giờ tôi phải đăng ký dll theo lập trình trên máy tính triển khai.Đăng ký một C#/VB.NET COM dll theo lập trình

Làm cách nào để thực hiện điều đó (lập trình! Không sử dụng regasm)? Tôi nhớ, khi tôi đã từng gọi một dll VB6 từ một dll C++, tôi đã phải sử dụng DllRegisterServer và DllUnregisterServer.

Điều đó vẫn như vậy với một dll .NET?
Có vẻ như tôi phải bằng cách nào đó thêm chức năng dllregisterserver vào tệp .dll .NET.

Trả lời

28

Yuk, dlls NET không có DllRegisterServer, vì vậy bạn phải viết một trình cài đặt .NET, thực hiện ở đâu đó này:

Assembly asm = Assembly.LoadFile (@"c:\temp\ImageConverter.dll"); 
RegistrationServices regAsm = new RegistrationServices(); 
bool bResult = regAsm.RegisterAssembly(asm, AssemblyRegistrationFlags.SetCodeBase); 
+0

AFAIK nó cần quyền quản trị viên. Không phải là một sự khác biệt lớn khi gọi trực tiếp 'regasm'. Nhưng nó đã có tác dụng. +1 –

+2

@Arnaud Bouchez: Một điểm khác biệt lớn: Bạn có thể thử - nắm bắt và xử lý lỗi. Như với việc sinh sản một quy trình mới, nó cũng có thể, nhưng nhiều công việc hơn. –

1

Bạn có thể sử dụng process monitor để xem những thay đổi của hệ thống (về cơ bản thay đổi đăng ký tôi nghĩ) được thực hiện khi bạn sử dụng regasm.exe để đăng ký dll của mình và sau đó thực hiện thay đổi theo chương trình?

+0

Vâng, đó là con đường để đi với tinh khiết C/C++. Tốt, nhưng tôi nghĩ có thể mất thời gian để tìm ra cách để có được dữ liệu để viết ở đó ... –

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