EnableWindowsTargeting 到底有什么作用?

Jim*_*Aho 9 .net-core

我遇到了一个问题,无法编译 .NET 6 项目,因为它面向 Windows,但我正在 MacOS 上工作。这是 .csproj 文件的一部分:

<OutputType>WinExe</OutputType>
<TargetFramework>net60-windows</TargetFramework>
<UseWPF>true</UseWPF>
Run Code Online (Sandbox Code Playgroud)

当查看控制台输出时,我看到了以下有趣的内容:

/usr/local/share/dotnet/sdk/6.0.401/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FrameworkReferenceResolution.targets(90,5):错误 NETSDK1100:构建面向 Windows 的项目此操作系统,将 EnableWindowsTargeting 属性设置为 true

如果我只是将我的项目修改为:

<OutputType>WinExe</OutputType> 
<TargetFramework>net60-windows</TargetFramework> 
<UseWPF>true</UseWPF> 
<EnableWindowsTargeting>true</EnableWindowsTargeting>
Run Code Online (Sandbox Code Playgroud)

然后它成功编译,但现在我想知道这实际上是做什么的?我找不到关于该属性的太多文档,官方文档只说它将下载运行时包,但这到底意味着什么?我以为当你指定<TargetFramework>netXX-windows</TargetFramework>它时,它只能在 Windows 上运行?

Joh*_*olz 0

根据GitHub 上的 dotnet 文档,设置此属性true允许您在非 Windows 平台上构建 Windows 应用程序。