无法调试Visual Studio插件

10
问题已经说得很清楚了。我正在尝试编写一个Visual Studio插件(2012),实验性实例总是启动而不运行任何插件。主实例中没有触发断点,实验性实例也没有加载插件。
我应该指出:它曾经工作过一两次,然后我删除了该项目,因为我认为它是错误的项目类型,但最终以相同的名称重新创建了它。

无论是对"允许加载插件"进行调整,还是重置实验性实例,或者手动清理注册表,都无法解决问题。我还尝试了查找我的插件dll,但它没有出现在列表中。我已经没有任何想法和可能的搜索词了。有什么建议吗?

5个回答

3

我曾经和你遇到过同样的问题,现在我找到了解决方法,这与提供的插件项目中的新"文件属性"条目有关。

如果您打开此文件(在我的情况下称为"[应用程序名称] - For Testing.AddIn"),您将看到包含XML标记的内容,例如AddIn友好名称、描述等。

对于我来说,我发现我立即重命名了我的项目的输出程序集,而这与此属性文件中找到的不匹配:

<Extensibility xmlns="http://schemas.microsoft.com/AutomationExtensibility">
<HostApplication>
    <Name>Microsoft Visual Studio</Name>
    <Version>11.0</Version>
</HostApplication>
<Addin>
    <FriendlyName>My Addin</FriendlyName>
    <Description>My Addin description.</Description>
    **<Assembly>E:\Workspaces\Scratch\MyApp\bin\MyApp.VisualStudio.Addin.dll</Assembly>
    <FullClassName>MyApp.VisualStudio.Addin.Connect</FullClassName>**
    <LoadBehavior>1</LoadBehavior>
    <CommandPreload>1</CommandPreload>
    <CommandLineSafe>0</CommandLineSafe>
</Addin>

我检查了程序集和类名,修正了它们,保存文件后点击调试,一切都重新开始运作了!希望这能帮到你……


2
这个难题的最后一部分是,“Addin - for testing”文件是一个链接,指向一个Visual Studio用于加载插件的区域中的文件。对于测试来说,通常是在类似C:\Users[用户名]\Documents\Visual Studio 2012\Addins[插件名称] - For Testing.AddIn这样的地方。 - The Senator

1

看起来这个问题有不同的解决方案,但这个最终帮助了我:

  1. 在AddIn文件中将<LoadBehavior>1</LoadBehavior>改为<LoadBehavior>0</LoadBehavior>并将其手动放入C:\Users[UserName]\Documents\Visual Studio 2012\Addins
  2. 重新启动Visual Studio(我使用的是2012)

完整的AddIn文件:

<?xml version="1.0" encoding="UTF-16" standalone="no"?>
<Extensibility xmlns="http://schemas.microsoft.com/AutomationExtensibility">
    <HostApplication>
        <Name>Microsoft Visual Studio</Name>
        <Version>11.0</Version>
    </HostApplication>
    <Addin>
        <FriendlyName>[Friendly Assembly Name]</FriendlyName>
        <Description>[Description of the Addin]</Description>
        <AboutBoxDetails>[About details]</AboutBoxDetails>
        <Assembly>[Full path to the binary e.g. C:\Test\debug\test.dll]</Assembly>
        <FullClassName>Test.Connect</FullClassName>
        <LoadBehavior>0</LoadBehavior>
        <CommandPreload>1</CommandPreload>
        <CommandLineSafe>0</CommandLineSafe>
    </Addin>
</Extensibility>

在我的情况下,我移动到了一台不同的开发者机器上,在旧机器上它之前可以工作,但在新机器上我没有任何 '[Assembly Name] - For Testing.AddIn',因为我没有打算将其检入。我认为 LoadBehavior 是 "For Testing" 和常规 AddIn 之间的区别。

1

我曾遇到类似的问题......为此苦恼了很长时间,最终试验性地向项目中添加其他配置(配置管理器)和更改框架,结果不可思议地解决了其中一个问题。(我认为可能是框架的问题,尽管这没有任何意义。)

我并不是说同样的方法适用于你。

这个试验并不是真正的随机试验:我从网上找到了一个“可调试”的插件,并比较了项目、解决方案和所有其他文件中的每一项,以找出可能不同的地方。这是我的真正建议。

如果所有其他方法都失败了,您还可以尝试手动附加调试器,看看是否能够通过这种方式取得进展。[虽然对我来说没用,但它可能提供有价值的信息,而且......并非所有的错误都是相同的。]


1
我遇到了同样的问题。调试在关闭所有 Visual Studio 实例之前都有效。然后我重新打开了 Visual Studio,它说我一直在调试的插件停止工作了。当 Visual Studio 询问是否要删除它时,我选择了是。
显然,在这种情况下删除插件会在 "[AppName] - For Testing.AddIn" 文件名后添加下划线。
为了解决这个问题,进入插件解决方案并查看 "[AppName] - For Testing.AddIn" 文件的属性。转到该文件所在的文件夹。在文件系统中将此文件重命名为与 Visual Studio 中的文件名相匹配的名称。

0
在我的情况下,Resharper 是问题的原因。禁用 Resharper 后一切恢复正常。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接