gpt4 book ai didi

c# - 使用 IDebugEventCallback2 的 VS2019 扩展

转载 作者:太空宇宙 更新时间:2023-11-03 22:32:01 34 4
gpt4 key购买 nike

我使用 VS2019 16.1.6 创建了一个新的 VS 扩展。 我添加了这个 using 语句

using Microsoft.VisualStudio.Debugger.Interop;

并将接口(interface) IDebugEventCallback2 添加到我的类中

public sealed class VSIXProject1Package : AsyncPackage, IDebugEventCallback2

不是我得到的错误:

error CS0433: The type 'IDebugEventCallback2' exists in both 'Microsoft.VisualStudio.Debugger.Interop, Version=8.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and 'Microsoft.VisualStudio.Debugger.InteropA, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'

我怎样才能摆脱这个错误?或者除了使用 IDebugEventCallback2 之外,还有其他方法可以对调试器事件使用react吗?

编辑:向 Microsoft 报告的问题: https://developercommunity.visualstudio.com/content/problem/651199/vs2019-extension-using-idebugeventcallback2.html

最佳答案

VS2019 使用PackageReference用于管理 VSIX 项目的 nuget 包的格式。

默认情况下,它将引用 Microsoft.VisualStudio.SDKMicrosoft.VSSDK.BuildTools 包。另外,由于 Microsoft.VisualStudio.SDK 包依赖于许多其他包,该项目也将引用这些包。

看看这个简单的结构:

Microsoft.VisualStudio.SDK
......(other dependencies)
--Microsoft.VisualStudio.Debugger.Interop
--Microsoft.VisualStudio.OLE.Interop
--Microsoft.VisualStudio.Debugger.Interop.10.0
--Microsoft.VisualStudio.Debugger.InteropA
......(11.0,12.0,14.0,15.0)
--Microsoft.VisualStudio.Debugger.Interop.16.0
--Microsoft.VisualStudio.Debugger.InteropA

很明显,此问题是由 VSIX 项目添加对 Microsoft.VisualStudio.Debugger.InteropMicrosoft.VisualStudio.Debugger.InteropA 的引用引起的。这两个程序集具有相同的命名空间 Microsoft.VisualStudio.Debugger.Interop,并且都具有 IDebugEventCallback2 接口(interface)。我认为这就是导致此问题的原因。

解决方法:

正常我们可以用extern alias对于这种情况。但它还不支持 PackageReference 格式。幸运的是,我从 gertjvr 中找到了一个很好的提示。 .所以我们只需要:

卸载项目=>编辑xxx.csproj=>将以下内容添加到项目文件中:

  <Target Name="ChangeAliasesOfStrongNameAssemblies" BeforeTargets="FindReferenceAssembliesForReferences;ResolveReferences">
<ItemGroup>
<ReferencePath Condition="'%(FileName)' == 'Microsoft.VisualStudio.Debugger.Interop'">
<Aliases>signed</Aliases>
</ReferencePath>
</ItemGroup>
</Target>

如果要使用此程序集中的接口(interface),可以将 ReferencePath 更改为 Microsoft.VisualStudio.Debugger.InteropA。这取决于您的需要。

关于c# - 使用 IDebugEventCallback2 的 VS2019 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57074957/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com