我试着弄清楚当前项目(例如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 ...
答案 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");
}