Я хочу создать простое консольное приложение для автоматической регистрации dll.C# register dll, используя путь к файлу (RegistrationService.RegisterAssembly)
После некоторых исследований я нашел этот кусок кода:
public static bool Register_Dlls(string dllPath)
{
Assembly asm = Assembly.LoadFile(dllPath);
RegistrationServices regAsm = new RegistrationServices();
bool bResult = regAsm.RegisterAssembly(asm, AssemblyRegistrationFlags.SetCodeBase);
return bResult;
}
Реализация моего приложения, используя этот код и запустить его в качестве администратора DLL, не может быть зарегистрирован. Это моя проблема.
Но с помощью команды Regasm внутри ЦМД (как администратор), то длл зарегистрирован правильно:
C:\windows\system32> C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe C:\PWS\Bin\MyContextMenu.dll /codebase
Мой вопрос: я что-то или выше код забыть не может быть использована для моей цели?
dll был скомпилирован в режиме «ЛЮБЫЕ ЦП» в режиме платформы, как и в моем приложении, и мне нужно зарегистрировать сборку на машине x64.
В проекте вашей библиотеки dll в файле AssemblyInfo должен существовать атрибут 'ComVisible' со значением по умолчанию' false'. Вы изменили его на «истинный»? Результирующая строка должна быть '[assembly: ComVisible (true)]'. – Sam
«не может быть зарегистрирован» не является полезной диагностикой, вы должны сообщить нам, как выглядит сбой. Если вы не видите приглашение на повышение UAC, тогда сбой гарантирован. –
Да, класс COM видимый, я использовал атрибут '[ComVisible (true)]' перед объявлением класса. – baru