C:\Program Files\dotnet\sdk\6.0.101\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.DefaultItems.Shared.targets(190,5): error NETSDK1022: 包含了重复的“Compile”项。.NET SDK 默认包含你项目目录中的“Compile”项。可从项目文件中删除这些项;如果希望将其显式包含在项目文件中,可将“EnableDefaultCompileItems”属性设置为“false”。有关详细信息,请参阅 https://aka.ms/sdkimplicititems。
重复项为: 重复的原因是 WPF 在 .NET SDK 里修复了在 XAML 构建过程中,没有引用 NuGet 包里面的文件。而源代码包许多都是在此修复之前打出来的,源代码包为了修复在 XAML 里面没有引用文件,就强行加上修复逻辑引用文件。而在 dotnet 6 修复了之后,自然就会导致引用了多次
<IncludePackageReferencesDuringMarkupCompilation>False</IncludePackageReferencesDuringMarkupCompilation>更改之后的 csproj 代码如下
<!-- 堆代码 duidaima.com --> <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>net6.0-windows</TargetFramework> <UseWPF>true</UseWPF> <IncludePackageReferencesDuringMarkupCompilation>False</IncludePackageReferencesDuringMarkupCompilation> </PropertyGroup> </Project>此影响不仅包含 TargetFramework 为 net6.0-windows 的 WPF 应用,而是任何使用 SDK 风格的 WPF 项目。其原因是 dotnet 6 此更改是在 dotnet sdk 更改构建调度过程,和具体应用的框架无关,只影响构建本身