无法嵌入互操作类型“ ProjectKinds”。改用适用的界面

时间:2018-06-28 15:18:37

标签: c# visual-studio-2017 envdte visual-studio-templates

我正在开发Visual Studio扩展程序,但很遗憾,我无法检查项目类型,请查看以下代码:

 if (project.Kind == EnvDTE80.ProjectKinds.vsProjectKindSolutionFolder)
            {
                list.AddRange(GetSolutionFolderProjects(project));
            }
            else
            {
                list.Add(project);
            }

enter image description here

2 个答案:

答案 0 :(得分:4)

在线找到的常见建议是将EnvDTE80引用的“嵌入互操作类型”设置为false。但是,这对我不起作用。我不确定这是否是VS 2017的新功能。

我发现此MSDN页面对我有帮助:https://blogs.msdn.microsoft.com/mshneer/2009/12/07/vs-2010-compiler-error-interop-type-xxx-cannot-be-embedded-use-the-applicable-interface-instead/

基本上,

  1. 找到ProjectKinds的定义(您可以直接进行定义 点击并选择“转到定义”)
  2. 在您的项目中复制一个具有不同名称(即ProjectKinds)的EnvDteProjectKinds
  3. 在您本应使用EnvDteProjectKinds的项目中使用ProjectKinds

答案 1 :(得分:1)

Visual Studio 2017 15.8版使得可以使用PackageReference语法来引用Visual Studio可扩展性(VSIX)项目中的NuGet包。这样就可以更轻松地推断出NuGet软件包,并为拥有包含整个VSSDK的完整元软件包打开了大门。

在NuGet软件包下面安装将解决 EmbedInteropTypes 问题。

  

安装软件包Microsoft.VisualStudio.SDK.EmbedInteropTypes