2014-02-12 2 views
1

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

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

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

+0

Я создал пользовательский COM-объект только для целей тестирования. И да, у него есть класс внутри. (с по умолчанию ctor.) и 2 интерфейса без функциональности, а также класса. –

+0

Проверьте это http://stackoverflow.com/questions/8054039/regasm-ra0000-no-types-were-registered – Sameer

+0

Я уже проверил много похожих сообщений о похожих проблемах. Кстати, это сообщение не имело никакого смысла. Моя проблема отличается от этого. Но спасибо за вашу заботу. –

ответ

1

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^