Отсутствует ошибка сборки netstandard 2.0 в пустом проекте Xamarin.Forms - PullRequest
1 голос
/ 24 января 2020

Я получаю сообщение об ошибке при создании пустого проекта Xamarin.Forms в VS, где нетсвязь с нестандартной сборкой, и я не могу понять, как это исправить.

В приложении появляются следующие ошибки:

  • CS0012 C# Тип определен в сборке, на которую нет ссылок. Необходимо добавить ссылку на сборку 'netstandard, версия = 2.0.0.0, Culture = нейтральная, PublicKeyToken = cc7b13ffcd2ddd51'
  • CS0006 C# Файл метаданных '.. \ bin \ Debug \ netstandard2.0 \ ref \ App.dll 'не найден)

Я пытался, но безрезультатно:

  • Обновление пакета NETStandard.Library до 2.0 или выше через NuGet (работает для приложение. iOS и приложение. Android проекты, но не основное приложение - там написано «Заблокировано проектом» для всего, что выше v1.6.1)
  • Добавление ссылки на запрошенную нестандартную версию в csproj <Reference Include="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
  • Обновление Xamarin.Essentials и Xamarin.Forms в NuGet
  • Обновление до 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>

У кого-нибудь есть идеи, что с этим делать? Большинство ответов, которые я нашел, либо не работают, либо имеют несколько лет и, как утверждается, были исправлены в более новых версиях VS.

Вот ссылка на мои подробные журналы вывода:

VS Community 19 Preview: https://privatebin.net/?c7c4cd6123e0edd7#5qYTwaKSyGKBMgU3beshk3Xgx52nyCyAYcsq63uRfWWT

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

1 Ответ

0 голосов
/ 12 февраля 2020

Обнаружил проблему после двух недель личных страданий и 2 часов, проведенных с кем-то, кто имел опыт применения Ксамарина! Проблема заключалась в том, что у меня были установлены две разные версии do tnet (одна на диске C: и одна на диске E: где я также храню программные файлы). Введите dotnet --version в cmd только для того, чтобы увидеть, что найденная версия была Ancient (1.x), а затем dotnet --list-sdks, чтобы найти дубликат. После удаления старого SDK на диске E: и перепроверки моей версии do tnet ошибка исчезла!

...