VSIX扩展名-如何确保VSIX文件中包含引用的dll或程序集?

Mar*_*ing 5 vsix visual-studio-2015

当用户安装我的扩展程序但未安装最新的Visual Studio更新时,该扩展程序无法解析Microsoft.CodeAnalysis.CSharp.dll,并显示以下消息:

无法加载文件或程序集“ Microsoft.CodeAnalysis.CSharp,版本= 1.2.0.0,区域性=中性,PublicKeyToken = 31bf3856ad364e35”或其依赖项之一。该系统找不到指定的文件。

我确保扩展名确实引用了该程序集,并且确实引用了该程序集,但是为什么将此程序集从VSIX文件中排除?

我将VSIX文件重命名为ZIP,查看了其中的内容,尽管VSIX文件中包含其他“ Microsoft.CodeAnalysis。*。dll”程序集,但该程序集并未交付。

我还确认引用上的“ 复制本地 ”属性为True。

Mar*_*ing 5

我找到了解决此问题的方法,并且可以看到VSIX中现在包含了该dll,并且用户确认该文件适用于他。

  1. 在Visual Studio中,打开扩展解决方案,
  2. 双击.vsixmanifest文件
  3. 打开“资产”标签
  4. 点击“新建”
  5. 将类型设置为“ Microsoft.VisualStudio.Assembly”
  6. 将源设置为“文件系统上的文件”
  7. 单击“浏览”将“路径”设置为您的dll(不要担心引用不会添加为绝对路径,而是添加为相对路径或只是强程序集名称)
  8. 您可以将“嵌入此文件夹”保留为空。
  9. 点击确定
  10. 重新生成解决方案,该文件现在应该在VSIX文件中。

在此处输入图片说明

然后将此行添加到vsixmanifest文件中:

<Asset Type="Microsoft.VisualStudio.Assembly" d:Source="File" Path="Microsoft.CodeAnalysis.CSharp.dll" AssemblyName="Microsoft.CodeAnalysis.CSharp, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
Run Code Online (Sandbox Code Playgroud)