Ссылка на проект .netstandard2_0 в проекте platform.uno - PullRequest
0 голосов
/ 30 мая 2018

Воспроизвести:

Загрузить https://github.com/nventive/Uno.QuickStart

Добавить проект .NETStandard2_0 с именем TestMe.

Ссылка TestMe в проекте MyApp.Droid.

Создание MyApp.Droid приводит к ошибке компиляции:

System.InvalidOperationException: Проект (ы) TestMe не предоставил никаких ссылок на метаданные.Это может быть связано с неверным путем, таким как $ (SolutionDir), используемый в csproj;попробуйте вместо этого использовать относительные пути. Это также может быть связано с отсутствующей директивой конфигурации по умолчанию.Обратитесь к файлу Unme.SourceGenerator Readme.md для получения более подробной информации.в Uno.SourceGeneration.Host.SourceGeneratorHost.d__4.MoveNext () в C: \ projects \ uno-sourcegeneration \ src \ Uno.SourceGenerationHost.Shared \ SourceGeneratorHost.cs: строка 303 MyApp.Droid

Я уже пробовализменить TestMe.csproj на

<TargetFrameworks>net461;netstandard2.0</TargetFrameworks>

или

<TargetFrameworks>net47;netstandard2.0</TargetFrameworks>

без успеха.

Есть ли решение этой проблемы?

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Благодаря Джерому я нашел прозвище целевой платформы xamarin https://docs.microsoft.com/en-us/xamarin/cross-platform/app-fundamentals/nuget-manual

Проблема в том, что по умолчанию проекта .NETStandard не разрешает xamarinцелевые рамки.Решение состоит в том, чтобы использовать https://github.com/onovotny/MSBuildSdkExtras

Чтение README.md предполагает, что из VS15.6 + вы можете обмениваться с

обновленный TestMe.csproj должен выглядеть следующим образом

<Project Sdk="MSBuild.Sdk.Extras/1.2.2">
 <PropertyGroup>
   <TargetFrameworks>netstandard2.0;MonoAndroid81;xamarinios10</TargetFrameworks>
 </PropertyGroup>

ВНИМАНИЕ: Моникроидный моникер проекта .netstandard должен точно соответствовать версии проекта Android.-> MonoAndroid81 для Oreo8.1

ОБНОВЛЕНИЕ: Вместо записи

<Project Sdk="MSBuild.Sdk.Extras/1.2.2">

можно также написать

<Project Sdk="Microsoft.NET.Sdk">
  <Import Project="$(MSBuildSDKExtrasTargets)" Condition="Exists('$(MSBuildSDKExtrasTargets)')" />
0 голосов
/ 30 мая 2018

К сожалению, это известная проблема Roslyn: https://github.com/nventive/Uno.SourceGeneration/issues/2

Чтобы обойти эту проблему, вы должны включить все платформы, которые вы хотите поддерживать, в свой узел TargetFrameworks, который в вашем случае - MonoAndroid80 (илианалогичный).

...