繁体   English   中英

如何在Visual Studio扩展(VSIX)中将项目文件类型与项目类型相关联

[英]How to associate project filetypes with project type in Visual Studio Extension (VSIX)

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

我的预感是,无论Visual Studio需要加载什么来识别这个项目类型,从Explorer中打开项目时都不会很快加载,但是当Visual Studio已经启动并运行时加载。 那么,我的问题是,为了识别扩展的项目类型,Visual Studio需要加载什么? 我如何告诉Visual Studio加载它?

我已经查看了MSDN的VSIX文档以获得答案,但是有大量的文档可以通过,在我看到的内容中,我没有看到任何与此问题有关的内容。 我也看过IronPython的扩展,但它的结构与VsClojure完全不同。 任何帮助将非常感激。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM