RegAsm Отменить регистрацию

Ниже метод, который я создал, работает для регистрации. Но я получаю: "regasm: warning ra0000: ни один тип не был зарегистрирован" за отмену регистрации.

    private static void ExecuteRegAsm(string comObjectPath, string typeLibraryName, string regAsmPathToExecute, string regAsmParameter = null)
    {
        var startInfo = new ProcessStartInfo
        {
            CreateNoWindow = false,
            UseShellExecute = false,
            FileName = regAsmPathToExecute,
            WindowStyle = ProcessWindowStyle.Hidden
        };

        switch (regAsmParameter)
        {
            case  null:
                startInfo.Arguments = comObjectPath + " /tlb:" + typeLibraryName + " /Codebase";
                break;
            case "/u":
            case "-u":
                startInfo.Arguments = "/u " + comObjectPath;
                break;
        }

        using (var exeProcess = Process.Start(startInfo))
        {
            if (exeProcess != null) exeProcess.WaitForExit();
        }
    }

Как решить эту проблему?

1 ответ

Решение

Я решил эту проблему, добавив /tlb: attribute и имя библиотеки типов объекта в качестве значения кода. Ниже метод работает:

    private static void ExecuteRegAsm(string comObjectPath, string typeLibraryName, string regAsmPathToExecute, string regAsmParameter = null)
    {
        var startInfo = new ProcessStartInfo
        {
            CreateNoWindow = false,
            UseShellExecute = false,
            FileName = regAsmPathToExecute,
            WindowStyle = ProcessWindowStyle.Hidden
        };

        switch (regAsmParameter)
        {
            case  null:
                startInfo.Arguments = comObjectPath + " /tlb:" + typeLibraryName + " /Codebase";
                break;
            case "/u":
            case "-u":
                startInfo.Arguments = comObjectPath + " /tlb:" + typeLibraryName + " /u";
                break;
        }

        using (var exeProcess = Process.Start(startInfo))
        {
            if (exeProcess != null)
            {
                exeProcess.WaitForExit();
            }
        }
    }
Другие вопросы по тегам