【问题标题】:Cannot find the interop type that matches the embedded interop type找不到与嵌入式互操作类型匹配的互操作类型
【发布时间】:2022-06-17 20:20:06
【问题描述】:

我使用 AsyncPackage 类创建了一个 Visual Studios 扩展,它看起来像这样:

public sealed class Tools : AsyncPackage, IDisposable
{
    internal const string PrjCATIDCSharpFileBrowseObject = "{8D58E6AF-ED4E-48B0-8C7B-C74EF0735451}";
    private readonly List<IDisposable> _extenderProviders = new List<IDisposable>();

    protected override async Task InitializeAsync(CancellationToken cancellationToken, IProgress<ServiceProgressData> progress)
    {
        await base.InitializeAsync(cancellationToken, progress);

        _extenderProviders.Add(new BrowseProvider(this, PrjCATIDCSharpFileBrowseObject));
    }
}

BrowseProvider 上的代码 CS1748 出现 4 个错误。我不明白的是它给出的错误是针对BrowseProvider 不使用的类型。其中一个错误是针对IAsyncServiceProvider,但BrowseProvider 使用IServiceProviderAsyncPackage 确实继承了 IServiceProvider,但我将 BrowseProvider 更改为使用 IAsyncServiceProvider 但这并没有解决问题。在“工具”中的任意位置创建新的 BrowseProvider 对象会显示此 CS1748 错误。

我环顾四周,发现这个错误是由引用 DLL 引起的。我将 Microsoft.VisualStudio.Shell.Framework 设置为将其嵌入互操作类型属性设置为 False,但错误仍然存​​在。

我的所有代码都没有显示任何错误,除非我尝试使用工具包中的 with 创建 BrowseProvider 对象。我不明白为什么在 Tools 类中的任何位置创建新对象都会显示未使用类型的错误。

【问题讨论】:

    标签: c# vs-extensibility


    【解决方案1】:

    请确保您在项目中引用了正确的 dll 或 nuget 包。当没有参考时,通常会出现此错误。

    【讨论】:

      猜你喜欢
      • 2012-02-27
      • 2011-01-29
      • 2017-10-12
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 2011-10-05
      • 2018-06-10
      相关资源
      最近更新 更多