我正在尝试修复VsClojure中的错误,因此Visual Studio无法识别扩展名为.cljproj的文件作为Clojure项目。这只发生在VS尚未打开时;换句话说,如果您打开VS然后打开包含Clojure项目的解决方案,它将识别该项目。但是,如果您从资源管理器中打开解决方案或尝试从资源管理器中打开项目本身,则会显示“Visual Studio无法识别此项目类型。”
我的预感是,无论Visual Studio需要加载什么来识别这个项目类型,从Explorer中打开项目时都不会很快加载,但是当Visual Studio已经启动并运行时加载。那么,我的问题是,为了识别扩展的项目类型,Visual Studio需要加载什么?我如何告诉Visual Studio加载它?
我已经查看了MSDN的VSIX文档以获得答案,但是有大量的文档要经过,而且在我看到的内容中,我没有看到任何与此问题有关的内容。我也看过IronPython的扩展,但它的结构与VsClojure完全不同。任何帮助将不胜感激。
答案 0 :(得分:2)
您必须将项目类型添加到注册表,以便Visual Studio可以识别并加载* .cljproj文件。有关详细信息,请参阅this MSDN文章以及this文章,其中包含添加新项目类型时涉及的所有步骤。
很遗憾,您无法从VSIX进行此更改,如MSDN states:
VSIX格式严格使用基于文件的部署,但不是 支持写入全局程序集缓存(GAC)或系统 注册表中。
相反,您需要创建一个MSI安装程序。在这种情况下,请选择MSI creation method。 IronPython使用Windows Installer XML (WiX) toolset,因此您可以使用它作为示例。以下是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=""%1""/>
</Extension>
</ProgId>
</Component>
查看完整示例中IronPython源代码树下的Msi目录。