Установка ProgId во внешней DLL
Я довольно новичок в C# и Visual Studio, поэтому, может быть, мне здесь не хватает чего-то простого, но я не смог найти никаких решений.
Мне дали 2 проекта NET, один из которых - исполняемый файл, выполняющий несколько вещей, но основной фрагмент кода:
object tempInstance = Activator.CreateInstance(Type.GetTypeFromProgID(progID));
Другой проект просто создает файл.dll, который я добавил в исполняемый файл в Visual Studio, щелкнув правой кнопкой мыши "Ссылки" и выбрав "Добавить ссылку...", а затем перейдя к файлу.dll, который другой проект создано.
Однако у меня возникают проблемы при изменении progId в файле.dll. Если я оставлю это как "NETLoginDevice.DemoLoginDevice", это работает. Я также могу изменить первую часть и заставить "TestMan.DemoLoginDevice" работать. Тем не менее, я хотел изменить его на что-то вроде "TestMan.Receiver", но исполняемый код возвращает ноль, когда он пытается получить тип из этого progId. Что-то мне нужно изменить, чтобы заставить это работать? Я не могу найти какую-либо другую ссылку на "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 (в случае, если что-то перезаписывалось), но мне не повезло.