VSTS - Uno с Xamarin iOS Build error для функции C # 7.1, когда LangVersion установлен правильно - PullRequest
0 голосов
/ 27 июня 2018

При сборке на VSTS (Windows Hosted Machine) у меня появляется следующая ошибка:

Оператор '==' нельзя применить к операнду 'default'

Тем не менее, в моем проекте у меня есть:

<PropertyGroup>
  <LangVersion>7.1</LangVersion>
</PropertyGroup>

Более того, на моей машине он собирается (в режимах отладки и выпуска).

UPDATE

Ошибка впервые появилась, когда у меня было следующее:

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
  <LangVersion>7.1</LangVersion>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
  <LangVersion>7.1</LangVersion>
</PropertyGroup>

Обратите внимание, что это библиотека, и я делаю многоцелевой таргетинг (netstandard2.0;xamarinios10), но я не понимаю, почему это должно иметь значение.

UPDATE2

Я пытался

<PropertyGroup>
   <LangVersion>7.1</LangVersion>
 </PropertyGroup>

Смотря в логах вижу:

/reference:/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/lib/mono/Xamarin.iOS/Facades/System.Xml.Xsl.Primitives.dll /debug- /debug:portable /filealign:512 /nologo /optimize+ /out:obj/Release/xamarinios10/MyApp.ViewModels.dll /target:library /warnaserror- /utf8output /deterministic+ /langversion:latest /analyzer:/Users/vsts/.nuget/packages/uno.ui/1.31.0-dev.8/analyzers/Uno.Analyzers.dll MyViewModelA.cs MyViewModelB.cs... Parameter.cs ReactiveGroup.cs "/var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/Xamarin.iOS,Version=v1.0.AssemblyAttributes.cs" obj/Release/xamarinios10/MyApp.ViewModels.AssemblyInfo.cs /warnaserror+:NU1605
2018-06-27T20:11:28.5184750Z MyViewModelA.cs(105,89): error CS8310: Operator '==' cannot be applied to operand 'default' [/Users/vsts/agent/2.134.2/work/1/s/MyApp.ViewModels/MyApp.ViewModels.csproj]

Так что я думаю, что это может быть не ошибка сборки, а какая-то Uno Ошибка анализатора.

Примечание: странно, что в журнале упоминается uno.ui/1.31.0-dev.8, поскольку я обновил пакет (см. Ниже). Как будто там было какое-то кэширование, я не знаю как.

<PackageReference Include="Uno.UI" Version="1.31.0-dev.79" />

Update3

Я не могу скопировать полный журнал здесь, но здесь команда csc для проекта, который не удается построить:

/Library/Frameworks/Mono.framework/Versions/5.8.1/lib/mono/4.5/csc.exe /noconfig /unsafe- /checked- /nowarn:1701,1702,1705 /langversion:latest /nostdlib+ /errorreport:prompt /warn:4 /define:__IOS__;__MOBILE__;__UNIFIED__;TRACE;RELEASE;XAMARINIOS1_0

UPDATE4

Спасибо @ JeromeLaban , который предоставил мне эту ссылку о Mono 5.8.0, поскольку она показывает, что версия mono совместима только с C # 7.0.

Однако в спецификациях очереди MacOs говорится, что установлено Mono 5.10 и эта версия до C # 7.2. Поэтому следующий вопрос (и я написал специальный вопрос ) - как указать моно версию для сборки.

1 Ответ

0 голосов
/ 29 июня 2018

Задача xamarinios vsts , которую я запускаю в размещенной очереди VST MacOs, запускает mono 5.8.0 (даже если на ней установлена ​​ mono 5.10.0 очередь согласно спецификациям ). А версия 5.8.0 совместима с C # 7.0, поэтому не может запускать код C # 7.1.

...