【问题标题】:VSTS - Uno with Xamarin iOS Build error for C# 7.1 feature while LangVersion is properly setVSTS - Uno with Xamarin iOS Build error for C# 7.1 feature while LangVersion 设置正确
【发布时间】:2018-06-29 18:14:01
【问题描述】:

在 vsts(Windows 主机)上构建时出现以下错误:

运算符“==”不能应用于操作数“默认”

但是,在我的项目中,我有:

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

此外,在我的机器上它确实构建(在调试和发布模式下)。

更新

当我遇到以下错误时,第一次出现错误:

<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),但我不明白它为什么重要。

更新2

我试过了

<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 Analyzer 错误。

旁注:奇怪的是日志提到uno.ui/1.31.0-dev.8,因为我已经升级了软件包(见下文)。好像涉及到一些缓存,我不知道怎么做。

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

更新3

我无法在此处复制完整日志,但此处为无法构建的项目的 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

更新4

感谢@JeromeLaban,他向我提供了关于 Mono 5.8.0 的 link,因为它表明 mono 的版本仅与 C# 7.0 兼容。

但是,MacOs 队列的 specs 表示已安装 Mono 5.10,并且该版本最高为 C# 7.2。 所以下一个问题(我专门写了一个question)是如何指定要构建的单声道版本。

【问题讨论】:

  • 您使用什么构建步骤?您是否选择了正确的 VS 版本?代理运行的是 VS 2017 吗?
  • 是的,一切都很好。它通常会构建。我在使用“==default”功能时遇到了错误。
  • 代理是托管的vs2017。
  • 您是否为 Debug 和 Release 构建配置设置了 LangVersion,因为它们在 .csproj 文件中是分开的?
  • 您确定它们必须分开吗?未指定构建配置(如问题所示)似乎在我的机器上工作。

标签: c# xamarin.ios azure-devops azure-pipelines uno-platform


【解决方案1】:

我在托管的 vsts MacOs 队列上运行的xamarinios vsts task 运行mono 5.8.0(即使根据specs 在该队列上安装了mono 5.10.0)。并且 5.8.0 版本最高兼容 C# 7.0,因此无法运行 C# 7.1 代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-11
    • 2021-03-07
    • 1970-01-01
    • 2018-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多