Regasm Registry отсутствует местоположение файла - PullRequest
0 голосов
/ 20 сентября 2019

Я создаю тестовый проект, чтобы увидеть, как я могу создать видимую для ком dll и использовать ее приложением vb6, но сейчас мое приложение, которое использует видимые коммандные библиотеки dll, является c # с поздним связыванием.

Я создал 2 теста.

один, в котором я установил сборку в comvisible с помощью buildmblies.cs и в свойствах проекта, т. Е. Зарегистрируйтесь для com interop

Другой Iиспользованные атрибуты для украшения моих методов

using System;
using System.Runtime.InteropServices;

namespace ComTestAsm
{
    [Guid("54AEB269-82E8-4B73-BBE6-57A28A0E7DFD")]
    [ComVisible(true)]
    [ClassInterface(ClassInterfaceType.None)]
    [ProgId("ComTestAttr")]
    public class Hello
    {
        public string SayHello()
        {
            return "Hello";
        }
    }
}

Мой тестовый код выглядит следующим образом

using System;
using System.Reflection;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var s = Type.GetTypeFromProgID("ComTestAsm");
            var t = Type.GetTypeFromProgID("ComTestAttr");

            var inst2 = Activator.CreateInstance(s);
            var inst = Activator.CreateInstance(t);


            string result = (string)inst.GetType().InvokeMember("SayHello", BindingFlags.InvokeMethod, null,inst,null);
        }
    }
}

ComTestAsm (set com, видимый в свойствах) работает нормально, но ComTestATTR (используя атрибуты) делаетне работает

Я получаю файл ошибки, не найденный при сравнении ключей reg.Я вижу, что ComTestAsm имеет ключ CodeBase с путем к файлу, а другой нет.Я использовал [это] [1] в качестве ссылки.Я хочу, чтобы он работал с атрибутами, и мне не нужно устанавливать его в форме свойств проекта.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...