将 Visual Studio 2022 预览版从 2.1 问题构建更新到 17.2.0 预览版 3

Updated Visual Studio 2022 Preview to 17.2.0 preview 3 from 2.1 issue building

我通常会在 android 模拟器上构建,在最新更新之前不会出现任何问题。现在我得到这个错误: 错误 NETSDK1130 Microsoft.Graphics.Canvas.winmd 无法引用。不支持在面向 .NET 5 或更高版本时直接引用 Windows 元数据组件。

我已确保所有 nuget 包都是最新的。 据我所知,C# 项目中的引用看起来不错:

<ItemGroup Condition="$(TargetFramework.Contains('-windows'))">
        <!-- Required - WinUI does not yet have buildTransitive for everything -->
        <PackageReference Include="Microsoft.WindowsAppSDK" Version="1.0.0" />
        <PackageReference Include="Microsoft.Graphics.Win2D" Version="1.0.1" />
    </ItemGroup>


    <ItemGroup>
      <PackageReference Include="Microsoft.Graphics.Win2D" Version="1.0.1" />
      <PackageReference Include="Microsoft.WindowsAppSDK" Version="1.0.2" />
      <PackageReference Include="sqlite-net-pcl" Version="1.8.116" />
      <PackageReference Include="SQLitePCLRaw.bundle_green" Version="2.0.7" />
      <PackageReference Include="SQLitePCLRaw.core" Version="2.0.7" />
      <PackageReference Include="SQLitePCLRaw.provider.dynamic_cdecl" Version="2.0.7" />
    </ItemGroup>

其他没有改变。有人解决了这个问题吗?

首先,您指定了这些行两次,其中一次使用了不同的版本号:

<PackageReference Include="Microsoft.Graphics.Win2D" Version="1.0.1" />
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.0.2" />

其次,这看起来像一个较旧的模板,也就是您已使用较早的预览开始此项目。这很好,但是对于每次更新,请仔细查看迁移项目以使用最新版本所需的内容。例如,这里是 the notes for RC1。它专门针对这些包提到:

These are no longer needed in your csproj

<ItemGroup Condition="$(TargetFramework.Contains('-windows'))">
  <PackageReference Include="Microsoft.WindowsAppSDK" Version="1.0.0" />
  <PackageReference Include="Microsoft.Graphics.Win2D" Version="1.0.0.30" />
</ItemGroup>

这对我有帮助: https://github.com/dotnet/maui/wiki/Migrating-to-RC1

我完成了自“迁移到预览版 13”以来的所有升级步骤