2014-01-14 309 views
2

我們在我們公司開發了一種「自定義工具」類型VSIX Visual Studio Extension。該擴展從某些xml文件生成C#代碼。現在我有一個生成VSIX的項目,作爲構建的結果。安裝VSIX的NuGet包裝

目標:我想也將這個VSIX包裝到NuGet包中,我的開發人員可以將其安裝到他們的解決方案中。所以我正在尋找某種項目模板或其他的東西。或者,如果在現有項目(現在生成VSIX)中觸發了某個過程,它甚至會更好。 我似乎沒有在Visual Studio(2013)中找到任何模板。

Bonus chatter:如果我要手動爲VSIX創建NuGet包,那該怎麼辦?我在看NuGet Package Explorer。我應該添加哪些文件和目錄層次結構?我有一個VSIX文件(其中包含extension.vsixmanifest,生成器dll和pkgdef)。 pkgdef是指發生器組件,也是涵蓋的語言。如何構建NuGet包? (在Visual Studio SDK中有一個示例代碼生成器:http://code.msdn.microsoft.com/Visual-Studio-2010-SDK-ddfe1372,請參閱「SingleFileGenerator」示例。我們的擴展目的非常不同,但體系結構相同:它從xml生成C#)。

我試圖搜索這個問題,但是點擊是在討論非常不同的場景,比如項目模板類型VSIX以及如何將NuGet包包含到VSIX等等。這些對我來說都是無關緊要的。理論上我的要求不那麼複雜。

+1

這似乎有點奇怪。 Nuget包被安裝到一個項目中; VSIX安裝在Visual Studio上。也就是說,你可能想要爲此使用vsixinstaller.exe。 – Jimmy

+0

這可能是我錯了。由於「自定義工具」類型的extentsion的組件需要註冊regasm,甚至gacutil,NuGet的安裝功能可能還不夠。我們的項目最初有一個vdproj類型的安裝程序,這在VS 2010之後不再受支持。可能我們需要開發一個WiX安裝程序,我不想採用InstallShield LE方式。 –

+0

我仍然想知道如何創建一個NuGet包,當它安裝到Visual Studio中時,它將安裝VSIX。在哪裏以及如何將VSIX文件放入NuGet包中? –

回答

2

前一段時間,我使用VSIXCommands創建了一個包,它實際上完成了這項工作。 只需引用VSIXCommand包並將包中的install.ps更改爲如下形式:

param($installPath, $toolsPath, $package, $project) 

$id = 'yourPackageId' 
$extension = Get-InstalledVsix $id 

if(!$extension) { 
    Install-GalleryVsix $id 
} 
+0

也許這可能是一個很好的解決方案,但我沒有項目和時間去嘗試 –