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();
}
}
}