0
我想创建一个简单的控制台应用程序来自动注册一个DLL。c#注册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我的应用程序。这是我的问题。
但是使用CMD(如管理员)内RegAsm命令,则该dll被正确注册:
C:\windows\system32> C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe C:\PWS\Bin\MyContextMenu.dll /codebase
我的问题是:我会忘了什么东西或上面的代码不能用于我的目的是什么?
该DLL已被编译为'ANY CPU'解决方案平台模式,就像我的应用程序,我需要在x64机器上注册程序集。
在你的dll的项目中,在AssemblyInfo文件中应该存在'ComVisible'属性,默认值为'false'。你把它改成了“真”吗?结果行应该是'[assembly:ComVisible(true)]'。 – Sam
“无法注册”不是有用的诊断,您必须告诉我们失败的样子。如果您没有看到UAC提升提示,则保证失败。 –
是的,这个类是COM可见的,我在类声明之前使用了'[ComVisible(true)]'属性。 – baru