从EnvDTE.Project API检测dotnet核心项目

问题描述 投票:2回答:2

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

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

a)正常的.NET

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

b)点网核心:

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

但是如何从Project API获取这些信息?

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

vsix
2个回答
4
投票

你应该可以使用

Project.Kind

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

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


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");
}
© www.soinside.com 2019 - 2024. All rights reserved.