从EnvDTE.Project API

时间:2017-08-21 11:18:29

标签: vsix

我试着弄清楚当前项目(例如dte.ActiveSolutionProjects [0])是否是.NET核心项目。

从csproj文件的XML中,可以通过查看项目节点属性来告知它:

a)普通的.NET

<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

b)donet Core:

<Project Sdk="Microsoft.NET.Sdk">

但如何从Project API获取该信息?

我无法找到提示查看MSDN文档(他们的目标是Visual Studio 2015)或在调试时探索API ...

2 个答案:

答案 0 :(得分:4)

你应该可以使用

Project.Kind

C#.NET项目:{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}

C#dotnet核心项目:{9A19103F-16F7-4668-BE54-9A1E7A4F7556}

答案 1 :(得分:0)

自2018年8月(VS 15.8)起,先前投票的答案不再起作用。

@reduckted发布了vs开发人员社区的链接,其中 David Kean [MSFT] 发布了可能的解决方案:

using Microsoft.VisualStudio.Shell;

internal static bool IsCpsProject(this IVsHierarchy hierarchy)
{
  Requires.NotNull(hierarchy, "hierarchy");
  return hierarchy.IsCapabilityMatch("CPS");
}