3

我正在尝试修复VsClojure中的一个错误,即 Visual Studio 无法将扩展名为 .cljproj 的文件识别为 Clojure 项目。这只发生在 VS 尚未打开时;换句话说,如果您打开 VS,然后打开包含 Clojure 项目的解决方案,它会识别该项目。但是,如果您从资源管理器中打开解决方案或尝试从资源管理器中打开项目本身,则会显示“Visual Studio 无法识别此项目类型”。

我的直觉是,从资源管理器打开项目时,为了识别此项目类型而需要加载的任何 Visual Studio 都不会很快加载,而是在 Visual Studio 已经启动并运行时加载。那么,我的问题是,Visual Studio 需要加载什么才能识别扩展的项目类型?以及如何告诉 Visual Studio 加载它?

我查看了 MSDN 的 VSIX 文档以获取答案,但是有大量文档需要查看,在我查看的内容中,我没有看到与这个问题有关的任何内容。我还查看了 IronPython 的扩展,但它的结构似乎与 VsClojure 的完全不同。任何帮助将非常感激。

4

1 回答 1

2

您必须将项目类型添加到注册表,以便 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>

查看 IronPython 源代码树中的 Msi 目录以获取完整示例。

于 2012-01-26T06:23:10.457 回答