Подтвердить что ты не робот

Что случилось с regtlibv12?

У меня есть чистая установка Windows 8 на раздел, с установленной Visual Studio 11/2012 Professional, и я не могу найти regtlibv12.exe внутри C:\Windows\Microsoft.NET\Framework\v4.0.30319.

Ниже приведен снимок экрана моего раздела Windows 7 с .Net 4.0 (и regtlibv12):

Windows 7 - .Net 4

Ниже приведена Windows 8 с .Net 4.5 (и no regtlibv12):

Windows 8 - .Net 4.5

Является regtlibv12 больше не частью .Net framework? Нужно ли также устанавливать .NET 4.0? Что произойдет, если я установил .NET 4.0 поверх 4.5? Я знаю, что они оба отправляются в одно и то же место на жестком диске, а 4.5 эффективно перезаписывают 4.0, а 4.5 - по умолчанию в Windows 8. Нужно ли мне установить 4.0, а затем переустановить 4.5, чтобы получить regtlibv12 назад?

Спасибо

4b9b3361

Ответ 1

Это никогда не было частью рамки. И это полностью недокументировано. Существует, однако, очень последовательный слух, что многие программисты нашли его в своих каталогах v2.0.50727 или v4.0.30319 и выяснили, что он может решить проблемы с регистрацией. Многие сообщения на форуме упоминают об этом.

Точный способ, который он обнаруживает в этих папках, трудно перепроектировать, единственный образец, который я видел, заключается в том, что он будет там, когда вы сами устанавливаете фреймворк. И не будет там, когда каркас предварительно установлен на машине. Что несколько имеет смысл, в каталоге framework есть несколько файлов .tlb, которые необходимо зарегистрировать. Они содержат информацию о типе для типов .NET [ComVisible], на которые клиентский код может иметь зависимость. Зарегистрированные обычные библиотеки типов типов не применяются к файлам .tlb, так как они не встроены в обычный COM-сервер. С дополнительной догадкой, что инструмент не нужен в предустановленной версии .NET, потому что информация о регистрации свернута в обычную установку Windows.

Если вы попали в зависимость от инструмента, то вы не можете многое сделать, кроме копирования EXE с другой машины. Или решить причину, по которой вам нужно использовать ее с другого конца, чтобы вам больше не нужно:

  • Обходным путем является отказ от использования опции /tlb с Regasm.exe. Это может привести к ошибке TYPE_E_CANTLOADLIBRARY во время выполнения, когда клиентский код пытается использовать COM-интерфейс из другого потока. Библиотека типов предоставляет информацию о типе, которую стандартным маршаллеру необходимо для маршалирования аргументов метода. Используйте параметр /tlb, чтобы исправить это.

  • Это временное решение для получения COM-серверов для отображения на вкладке Project + Add Reference, COM. На этой вкладке перечислены зарегистрированные библиотеки типов. Однако это не правильное обходное решение, кроме серверов сборки, вы можете скомпилировать свой код, но вы не можете его запустить, так как регистрация не завершена. Правильный способ сделать это - использовать предоставленный автором установщик или с помощью Regsvr32.exe в крайнем случае, чтобы получить регистрацию как библиотеки типов, так и ключей CLSID.

  • Это обходной путь для COM-серверов, которые не регистрируют свою библиотеку типов. Как и выше, но регистрация типов библиотек является необязательной и, как правило, требуется только на вашем компьютере-разработчике, а не на компьютере, на котором запущен сервер. Большинство инструментов, которые могут потреблять библиотеки типов, позволяют добавлять их явно, а не зависеть от ключа реестра TypeLib. Так же, как и Visual Studio IDE, вы можете использовать вкладку "Обзор", чтобы напрямую выбрать файл .tlb.