簡體   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