【问题标题】:Referenced Code not executing in Visual Studio Extension引用的代码未在 Visual Studio 扩展中执行
【发布时间】:2016-08-31 15:37:10
【问题描述】:

我有一个 Visual Studio 扩展(VSIX 包),它显示一个 WinForms 对话框,然后返回一个字符串,该字符串插入到 VS 的代码编辑器窗口中。

WinForm 加载正常。我可以返回一个硬编码的字符串,然后 VS 将它放入编辑器。但是,如果 WinForm 调用第 3 方库(它是一个 .Net Core 类库),它会毫无例外地停止执行,我可以看到并关闭表单。为了进一步测试,我让引用的库简单地返回一个硬编码的字符串,因此该代码中没有异常的风险并且它失败了(这让我相信这是调用库的操作..如果我逐步完成这个使用调试器,它不会执行调用引用库的过程。如果我注释掉该行,它将逐步执行该过程)。如果我将表单取出并放入 WinForms 应用程序,它会按预期执行。

引用的库已通过本地 NuGet 源加载到扩展中。

  1. 第 3 方库当前未签名,可能是 问题?
  2. 第 3 方库是“类库 (.Net Core)”。我无法通过 GUI 看到像使用传统类库那样对库进行签名的选项(尽管这针对 .Net 4.6)。如果 WinForm 在不同的解决方案中,它本身可以调用它,它在通过 VS 扩展运行时会出错。
  3. 还有什么可能导致此问题?

旁注,这是我自己的扩展,而不是一般分发。

【问题讨论】:

    标签: c# visual-studio-2015 visual-studio-extensions vsix


    【解决方案1】:

    将发布此内容以供后代使用。当调用未签名的程序集时,Visual Studio 似乎会停止执行扩展中的代码。我通过签署第 3 方程序集对此进行了测试(然后它起作用了)。如果您使用模板在 Visual Studio 中创建该项目,则 VSIX 默认也会自行签名。

    【讨论】:

    • Visual Studio 不关心签名,但如果您要提供额外的 DLL,则必须告诉 VS 在哪里可以找到该 DLL。通过签署它,加载程序可能会改变一些东西。您应该使用 ProvideCodebaseAttribute 使事情变得明确。
    • 这很有趣,我明天测试一下。感谢您提供更多信息。
    猜你喜欢
    • 2011-09-26
    • 1970-01-01
    • 2016-03-17
    • 1970-01-01
    • 2015-07-22
    • 2016-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多