Как связать типы файлов проекта с типом проекта в Visual Studio Extension (VSIX) - PullRequest
3 голосов
/ 14 января 2012

Я пытаюсь исправить ошибку в VsClojure , из-за которой Visual Studio не распознает файл с расширением .cljproj как проект Clojure.Это происходит только тогда, когда VS еще не открыт;другими словами, если вы откроете VS, а затем откроете решение, содержащее проект Clojure, он распознает проект.Но если вы открываете решение из Explorer или пытаетесь открыть сам проект из Explorer, он говорит: «Этот тип проекта не распознается Visual Studio».

Я догадываюсь, что все, что нужно Visual Studio для загрузки по порядкураспознавание этого типа проекта загружается недостаточно быстро при открытии проекта из Проводника, но загружается, когда Visual Studio уже запущен и работает.Тогда мой вопрос: что нужно загрузить Visual Studio для распознавания типа проекта расширения?И как мне сказать Visual Studio, чтобы загрузить его?

Я просмотрел документацию MSIX по VSIX для ответов, но есть тонна документации, которую нужно просмотреть, и в том, что я смотрел, я не увидел ничего, касающегосяна этот вопрос.Я также посмотрел на расширение IronPython, но, похоже, оно полностью отличается от VsClojure.Любая помощь будет высоко ценится.

1 Ответ

2 голосов
/ 26 января 2012

Вы должны добавить тип проекта в реестр, чтобы Visual Studio могла распознать и загрузить файл * .cljproj. См. эту статью MSDN для получения подробной информации вместе с этой статьей со всеми шагами, добавленными при добавлении нового типа проекта.

К сожалению, вы не можете внести эти изменения с VSIX, так как MSDN сообщает :

Формат VSIX использует строго файловое развертывание и не поддержка записи в глобальный кэш сборок (GAC) или в систему реестр.

Вместо этого вам нужно будет создать установщик MSI. В этом случае выберите способ создания MSI . IronPython использует набор инструментов Windows Installer XML (WiX) , так что вы можете использовать это в качестве примера. Вот фрагмент из WiX XML, который устанавливает некоторые параметры реестра для типа проекта:

<Component Id="Comp_PyProgRegistration" DiskId="1" Guid="A7BC75A8-F418-4133-8BF9-490A76E99108">
  <RegistryValue Root='HKCR' Key='.pyproj' Type='string' Name='PerceivedType' Value='text' />
  <RegistryValue Root='HKCR' Key='VisualStudio.Launcher.pyproj.10.0\DefaultIcon' Type='string' Value='[IpyToolsInstallDir]PythonProject.ico' />
  <ProgId Id="VisualStudio.Launcher.pyproj.10.0" Description="IronPython Project">
    <Extension Id="pyproj" ContentType="text/plain">
      <Verb Id="OpenPyProj" Command="Open" TargetProperty="VSLAUNCHER" Argument="&quot;%1&quot;"/>
    </Extension>
  </ProgId>
</Component>

Посмотрите каталог Msi в дереве исходного кода IronPython для полного примера.

...