空白 Xamarin.Forms 项目上缺少 netstandard 2.0 程序集错误

kac*_*aci 2 .net c# xamarin xamarin.forms .net-standard-2.0

在 VS 中创建一个空白的 Xamarin.Forms 项目时出现错误,其中没有引用 netstandard 程序集,并且我一生都无法弄清楚如何修复它。

我在应用程序中遇到的错误是:

  • CS0012 C# 类型在未引用的程序集中定义。您必须添加对程序集“netstandard, Version=2.0.0.0, Culture=neutral,PublicKeyToken=cc7b13ffcd2ddd51”的引用
  • CS0006 C# 元数据文件 '..\bin\Debug\netstandard2.0\ref\App.dll' 找不到)

我试过了,无济于事:

  • 通过 NuGet 将 NETStandard.Library 包更新到 2.0 或更高版本(适用于 App.iOS 和 App.Android 项目,但不适用于主应用程序 - 对于 v1.6.1 以上的任何内容,它表示“被项目阻止”)
  • <Reference Include="netstandard"/>按照此处的建议在csproj 中添加对请求的 netstandard 版本的引用 :https : //github.com/dotnet/standard/issues/542#issuecomment-344591026
  • <Reference Include="System.IdentityModel"/>按照此处的建议添加到 csproj:https : //github.com/dotnet/standard/issues/542#issuecomment-501309019
  • 更改<TargetFramework>netstandard2.0</TargetFramework>
    <TargetFrameworks>netstandard2.0</TargetFrameworks>如下建议:https://github.com/dotnet/standard/issues/542#issuecomment-465375220
  • 删除 bin、obj、.suo 和 .vs 文件夹并重新启动 VS,以及创建一个全新的 Xamarin.Forms 空白项目
  • 在 NuGet 中更新 Xamarin.Essentials 和 Xamarin.Forms
  • 更新到 VS Community 2019 16.5.0 Preview 2.0(我在那里读到了这个问题已得到修复;不幸的是,我放错了它所在的线程)

这是我的 csproj(默认设置,注释中建议的 AutoGenerateBindingRedirects 除外):

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <ProduceReferenceAssembly>true</ProduceReferenceAssembly>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <DebugType>portable</DebugType>
    <DebugSymbols>true</DebugSymbols>
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Xamarin.Forms" Version="4.3.0.908675" />
    <PackageReference Include="Xamarin.Essentials" Version="1.3.1" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="ViewModels\" />
  </ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

任何人都知道该怎么做?我发现的大多数答案要么不起作用,要么已经有好几年了,并且据称已使用较新的 VS 版本进行了修复。

这是我的详细输出日志的链接:

VS 社区 19 预览:https : //privatebin.net/?c7c4cd6123e0edd7#5qYTwaKSyGKBMgU3beshk3Xgx52nyCyAYcsq63uRfWWT

VS 社区 19:https : //privatebin.net/?2cf9d7ab07e8a4fb#5UkwWhxKFPDGnTtVdZuawkQLMRNe4qvJLeuaBrFrPoJf

kac*_*aci 5

经过两周的个人痛苦和与 Xamarin 经验丰富的人共度 2 小时后发现问题!问题是我安装了两个不同版本的 dotnet(一个在 C: 驱动器中,另一个在我的 E: 驱动器中,我还保存了程序文件)。dotnet --version在cmd里面输入才发现找到的版本是Ancient (1.x),然后又dotnet --list-sdks找到了重复的。删除 E: 驱动器中的旧 SDK 并重新检查我的 dotnet 版本后,错误消失了!