2012-01-14 76 views
3

我試圖修復VsClojure中的錯誤,Visual Studio無法識別擴展名爲.cljproj的文件作爲Clojure項目。這隻發生在VS尚未打開時;換句話說,如果你打開VS然後打開包含Clojure項目的解決方案,它就會識別該項目。但是,如果您從資源管理器打開解決方案或嘗試從資源管理器打開項目本身,則會顯示「該項目類型無法被Visual Studio識別」。如何將項目文件類型與Visual Studio擴展(VSIX)中的項目類型相關聯

我的直覺是,無論Visual Studio需要加載,以便識別此項目類型不會很快從資源管理器打開項目時加載,但在Visual Studio已啓動並運行時加載。那麼,我的問題是,Visual Studio需要加載什麼才能識別擴展的項目類型?我如何告訴Visual Studio加載它?

我已經通過MSDN的VSIX文檔查找了答案,但有大量的文檔要通過,而在我看到的內容中,我沒有看到任何與此問題有關的內容。我也看過IronPython的擴展,但它似乎與VsClojure完全不同。任何幫助將非常感激。

回答

2

您必須將項目類型添加到註冊表中,以便Visual Studio可以識別並加載* .cljproj文件。有關添加新項目類型時涉及的所有步驟的文章,請參見this MSDN文章以及this文章。

不幸的是你不能從這個VSIX變化,MSDN states

的VSIX格式嚴格使用基於文件的部署和不 支持寫入到全局程序集緩存(GAC),或到系統 註冊表。

相反,您需要創建一個MSI安裝程序。在這種情況下,選擇你的MSI creation method。 IronPython使用Windows Installer XML (WiX) toolset,所以你可以使用它作爲你的例子。下面是從維克斯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的源代碼樹爲全面例如微星目錄。

相關問題