Visual Studio扩展(VSPackage)在所有实验实例中运行,但在作为.vsix安装后不运行,除非在VS20

本文关键字:运行 vsix 安装 VS20 VSPackage 扩展 Studio 实例 实验 Visual | 更新日期: 2023-09-27 18:02:47

我正在编写一个针对VS2010, VS2012和VS2013的Visual Studio扩展。它在每个实验实例中运行并初始化成功,没有任何问题。当我安装由构建生成的VSIX时,它安装在所有版本中都没有问题,但只有在VS2010中才真正执行。在其他情况下,它从未实例化或初始化。

没有抛出异常。运行带有/log标志的非experimental实例不会产生任何其他诊断信息(除了确认它已安装,并且具有比库中已存在的对应实例更新的版本之外)

我的阅读和经验表明,这是由于某种形式的缺失汇编或引用,但我不能确认。我也很困惑,特别是在没有异常或日志消息的情况下,如何找出丢失的内容。

我已经做了好几天了,现在尝试了一些事情,比如签署我的程序集,各种vsixmanifest更改,更改所需的框架版本,以及在SO上找到的许多其他没有成果的事情。

此外,我已经尝试安装旧的,已经从VS画廊发布的版本,它也不运行。然而,我收到了几个人的反馈(bug和感谢),所以我知道它对一些人有效。我没有收到任何反馈说"什么都没有发生",但不排除这些都没有报告的事实。

我不打算插入,但当前发布的版本在这里:http://visualstudiogallery.msdn.microsoft.com/5cc44f63-4ea8-4c17-8aa4-95037a2d32ef

我目前所处位置的全部源代码可以在github分支"ForStackOverflow"中找到。它和master之间的区别是一个TraceAppender,我用它来确认vpackage没有被实例化。https://github.com/alexcpendleton/Pendletron.Vsix.LocateInTFS/tree/ForStackOverflow

任何建议,经验,或任何有帮助的东西。谢谢你。

Visual Studio扩展(VSPackage)在所有实验实例中运行,但在作为.vsix安装后不运行,除非在VS20

多亏了Erti-Chris Eelmaa关于启用FusionLog的建议,我能够弄清楚发生了什么。

Visual Studio没有在安装的扩展目录中寻找我的扩展,而是从GAC和其他地方寻找。奇怪的是,它能很好地找到一个包含的程序集。

我检查了其他扩展的.vsixmanifest,发现我的扩展缺少一个项目的.pkgdef Content节点。似乎VS2010解释了这一点,或者出于其他原因,碰巧在扩展的安装目录中查找包程序集,而2012和2013没有。将此内容节点添加到我的.vsixmanifest中允许Visual Studio加载并运行扩展。

<Content>
  <VsPackage>Pendletron.Vsix.LocateInTFS.pkgdef</VsPackage>
</Content>