在外部DLL中设置ProgId

时间:2017-10-21 01:01:14

标签: c# visual-studio dll progid

我是C#和Visual Studio的新手,所以我可能会遗漏一些基本的东西,但我找不到任何解决方案。

我获得了2个.NET项目,一个是可执行文件,它做了一些事情,但代码的主要部分是:

object tempInstance = Activator.CreateInstance(Type.GetTypeFromProgID(progID));

另一个项目只是创建一个.dll文件,我通过右键点击'参考文献'来添加到Visual Studio中的可执行文件中。并选择'添加参考...'然后浏览另一个项目创建的.dll文件。

但是,我在更改.dll文件中的progId时遇到问题。如果我把它留作" NETLoginDevice.DemoLoginDevice"有用。我也可以改变第一部分并获得" TestMan.DemoLoginDevice"上班。但是,我想将其更改为" TestMan.Receiver",但是当它尝试从该progId获取类型时,可执行代码返回null。有什么我需要改变才能让它发挥作用吗?我找不到任何其他对#34; DemoLoginDevice"的引用。在项目的任何地方,以及我定义的类的顶部看起来像:

[ComVisible(true)]
[ProgId("TestMan.Receiver")]
[Guid("6C163B59-CF0F-4C69-B8A6-8D3DBED2640E")]
public class Receiver: IAuthenticationNET, IAuthenticationNETLoginResult

似乎我应该能够将progID设置为" TestMan.Receiver"并且可执行代码应该可以工作,但我得到一个ArgumentNullException。

编辑:我仍然无法使用Type.GetTypeFromProgID(),但如果我这样做:

Type.getTypeFromCLSID(new Guid("6C163B59-CF0F-4C69-B8A6-8D3DBED2640E"));

我可以在调试器中看到它返回

{Name = "Receiver" FullName = "TestMan.Receiver"}

就像我一样:

Type.getFromProgId("TestMan.DemoLoginDevice");

我仍然不明白" DemoLoginDevice"来自和为什么" TestMan.Receiver"不起作用。我也试过改变Guid(如果事情被覆盖了),但是没有运气。

0 个答案:

没有答案