我试图弄清楚当前项目(例如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 ...
你应该可以使用
Project.Kind
C#.NET项目:{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
C#dotnet核心项目:{9A19103F-16F7-4668-BE54-9A1E7A4F7556}
自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");
}