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

Ale*_*ton 5 c# visual-studio vsix visual-studio-extensions

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

没有例外被抛出.使用/ log标志运行非实验实例不会产生任何其他诊断信息(除了确认它已安装,并且具有比库中已有的版本更新的版本.)

我的阅读和经验表明,这是由于某种缺失的装配或参考,但我无法证实.我也不知道如何找出遗漏的内容,特别是没有异常或日志消息.

我已经在这里工作了几天,现在尝试签署我的程序集,各种vsixmanifest更改,更改所需的框架版本,以及此处发现的许多其他没有成果的事情.

此外,我已尝试从VS Gallery安装旧的已发布版本,但它也无法运行.但是,我收到了几个人的反馈(错误和感谢),所以我知道它适用于某些人.我没有收到任何反馈说明"没有任何反应",但不排除这些事件没有报道.

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

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

任何建议,经验或任何事情都会有所帮助.谢谢.

Ale*_*ton 1

感谢 Erti-Chris Eelmaa启用 FusionLog的建议,我能够弄清楚发生了什么。

Visual Studio 并未在已安装扩展的目录中查找我的扩展,而是从 GAC 和其他地方查找。奇怪的是,它找到了一个包含的组件,效果很好。

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

<Content>
  <VsPackage>Pendletron.Vsix.LocateInTFS.pkgdef</VsPackage>
</Content>
Run Code Online (Sandbox Code Playgroud)