首先让我说我对dll一无所知。我继承了一个旧的MS应用程序,我试图让它在VS2015中运行。我很确定我已经转换了解决方案并且所有设置正确,除了代码中引用的这个dll。我发现我需要创建一个对提供的Interop dll的引用,并将“embed interop types”属性设置为false。这满足了所有错误,我可以构建项目。但是,现在,当我运行它时,我在代码尝试实例化类时遇到异常。我得到了
Retrieving the COM class factory for component with CLSID {5EA33595-626F-4C08-9392
-94DE0E344D48} failed due to the following error: 80040154 Class not registered
(Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
那么,如何注册dll(或其互操作?)以便应用程序可以运行?我认为我不能regsvr32
dll - 它只是给出了“初始化例程失败”错误。我想我想regasm
interop dll?
答案 0 :(得分:0)
你没有注册interop dll,你注册了interop指向的dll。
例如,如果你有Interop.Foo.dll
需要在regsvr32中注册的dll是Foo.dll
,你需要找到那个dll并安装任何程序添加它或手动注册它。
重要提示,COM dll是特定于版本的版本。检查您的项目是否未设置为AnyCPU,您应该只在x86或x64上使用它,具体取决于您引用的dll的位数。此外,如果它是x86 dll并且您使用的是64位系统,则需要使用位于C:\Windows\SysWOW64\regsvr32.exe
中的regsvr32版本,该版本是64位系统上的32位版本。如果您只在regsvr32.exe
文件夹之外的任何文件夹中键入SysWOW64
,它将使用位于C:\Windows\System32\
目录中的64位版本。