闽公网安备 35020302035485号
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 更改构建调度过程,和具体应用的框架无关,只影响构建本身