Ссылка на проект.netstandard2_0 в проекте platform.uno
Воспроизвести:
Скачать https://github.com/nventive/Uno.QuickStart
Добавьте.NETStandard2_0 проект под названием TestMe.
Ссылка TestMe в проекте MyApp.Droid.
Сборка MyApp.Droid приводит к ошибке компиляции:
System.InvalidOperationException: ProjectM (s) 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 ответа
К сожалению, это известная проблема Roslyn здесь: https://github.com/nventive/Uno.SourceGeneration/issues/2
Чтобы обойти это, вы должны включить все платформы, которые вы хотите поддерживать, в свой узел TargetFrameworks, который в вашем случае - MonoAndroid80 (или аналогичный).
Благодаря Джерому я нашел прозвище целевой структуры xamarin https://docs.microsoft.com/en-us/xamarin/cross-platform/app-fundamentals/nuget-manual
Проблема заключается в том, что по умолчанию
Читая 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)')" />