有没有办法检测 .targets MSBuild 文件中当前使用的 SDK?

ega*_*her 5 msbuild msbuild-task

在 .NET 中,您可以通过指定顶级元素上的属性来指定要使用哪个.NET 项目 SDKSdkProject

<Project Sdk="Microsoft.NET.Web.Sdk">
Run Code Online (Sandbox Code Playgroud)

我正在编写一个 NuGet 包并尝试查找 MSBuild 属性或项目来保存正在使用的 SDK。我在官方文档中没有任何运气,也没有在MSBuild 结构化日志查看器中检查构建时找到一个。

是否有一种惯用的方法来识别在 MSBuild .targets 文件中为项目选择了哪个 Sdk?

我本来期望有一个像

$(MSBuildProjectSdkName) // "Microsoft.NET.Web.Sdk"
Run Code Online (Sandbox Code Playgroud)

nvi*_*rth 5

我使用 Rider IDE 的“项目属性”窗口找到的最接近的:
Rider IDE 的项目属性窗口

这是在一个使用Microsoft.NET.Web.Sdk.
因此,Web SDK 项目中似乎设置了 3 个与 SDK 相关的属性:

UsingMicrosoftNETSdk
UsingMicrosoftNETSdkRazor
UsingMicrosoftNETSdkWeb
Run Code Online (Sandbox Code Playgroud)

我想你可以确定Web SDK是否与Condition=" '$(UsingMicrosoftNETSdkWeb)' == 'true' "