在VSIX中包括整个文件夹

时间:2018-07-04 19:47:24

标签: visual-studio-extensions vsix

是否有一种简单的方法将整个文件夹作为内容包含在VSIX软件包中?希望有一种比分别为每个文件设置“在VSIX中包含”标志更简单的方法。

之所以需要这样做,是为了将扩展的html帮助页(带有很多依赖文件)添加到我们的扩展程序中。

2 个答案:

答案 0 :(得分:0)

  

是否有一种简单的方法将整个文件夹作为内容包含在VSIX软件包中?希望有一种比分别为每个文件设置“在VSIX中包含”标志更简单的方法。

您可以使用通配符*将文件夹下的所有文件作为内容包含在VSIX软件包中,例如:

<Content Include="TestFolder\*.*">
  <IncludeInVSIX>true</IncludeInVSIX>
</Content>

构建VSIX项目后,将生成的文件.vsix更改为.zip并解压缩,我们将在TestFolder中找到所有文件。

希望这会有所帮助。

答案 1 :(得分:0)

作为上述答案的另一种构想:由于.vsix是常规的.zip,因此您可以将其解压缩,将文件放入其中,然后将其压缩并重命名为*.vsix-仍可作为常规VSIX安装程序使用。

因此,用于构建带有其他文件的vsix安装程序的整个解决方案(例如,其他解决方案版本的输出):

  1. 添加文件夹,例如Resources到您的vsix项目
  2. 将此vsix项目中包含的“ blob”文件放入此文件夹,然后在Properties窗口中设置以下选项:
    BuildAction = Content
    Inclide in VSIX = True
  1. 提及需要在csproj中使用其他文件扩展名,例如:
    <Content Include="Resources\*.json">
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
    <Content Include="Resources\*.dll">
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
    <Content Include="Resources\*.exe">
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
  1. 将带有每个扩展名的任何虚拟文件(csproj中提到的每个掩码)放入此文件夹中-因此VS将了解csproj中的相关选项不是损坏/虚拟字符串,并且不会忽略带有此扩展以后

  2. 构建VSIX解决方案

  3. 抓取myproj.vsix文件

  4. 将其重命名为myproj.zip,解压缩

  5. 将您需要的任何文件(带有csproj文件中提到的扩展名/掩码)复制到Resources文件夹中

  6. 将所有内容压缩回myproj.zip,将其重命名为myproj.vsix

  7. 您可以使用: VSIX 安装程序,其中包含安装所需的大量其他文件。安装它。

  8. 将您的VS版本放入此路径,然后转到此处:

    cd %AppData%\Local\Microsoft\VisualStudio\14.0\Extensions\
  1. 将扩展名定位在名为3xg44004asdf的子文件夹下,并检查Resources子文件夹的内容-文件在那里。除了csproj中未提及的文件/文件掩码,即使它们存在于VSIX安装程序中。

这种情况对于使用类似TeamCity的运行器为内部需求构建扩展很有用:

  1. 建立VSIX依赖项
  2. 构建VSIX
  3. 如上所述将依赖项嵌入到VSIX中
  4. 提供修改后的VSIX