3

Visual Studio が拡張子 .cljproj を持つファイルを Clojure プロジェクトとして認識しないVsClojureのバグを修正しようとしています。これは、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の記事を参照してください。

残念ながら、 MSDNが述べているように、VSIXからこの変更を行うことはできません。

VSIX形式は、厳密にファイルベースの展開を使用し、グローバルアセンブリキャッシュ(GAC)またはシステムレジストリへの書き込みをサポートしていません。

代わりに、MSIインストーラーを作成する必要があります。その場合は、MSIの作成方法を選択してください。IronPythonはWindowsインストーラーXML(WiX)ツールセットを使用しているため、これを例として使用できます。プロジェクトタイプのレジストリの一部を設定するWiXXMLのスニペットを次に示します。

<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 に答える