无法在Azure DevOps上构建/测试.NET Core测试项目 - 无效的langversion

问题描述 投票:2回答:1

我正在尝试在Azure DevOps中运行dotnet test,但我一直收到此错误:

ControllerTests / v1Tests / FooTests / DetailsAsyncTests.cs(241,64):错误CS8107:功能'默认文字'在C#7.0中不可用。请使用语言版本7.1或更高版本。

这是我的.csproj文件的开头..

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <LangVersion>7.3</LangVersion>
    <PackageId><snipped></PackageId>
    <Version>0.0.0</Version>
  </PropertyGroup>

...

这是我的.yml文件的开始..

name: $(Year:yyyy).$(Month).$(DayOfMonth).$(Rev:r)
pool:
  vmImage: 'Ubuntu 16.04'

variables:
  buildConfiguration: 'Release'
....

steps

<snip>

- script: |
    dotnet test tests/snip/foo1.csproj --configuration $(buildConfiguration) -p:Version=$(Build.BuildNumber)
    dotnet test tests/snip/foo2.csproj --configuration $(buildConfiguration) -p:Version=$(Build.BuildNumber)
    dotnet test tests/snip/foo3.csproj --configuration $(buildConfiguration) -p:Version=$(Build.BuildNumber)
  displayName: 'dotnet test'

...

我也在<LangVersion>latest</LangVersion>尝试过.csproj

我已经三次检查项目文件中是否有<LangVersion>,测试正在测试中。


更新

所以我似乎有可能工作,但我仍然不知道这是一个'黑客'解决方案还是正确的解决方案。但是,我仍然不确定为什么会出现这个问题。

我添加了langver作为msbuild属性:

dotnet test tests/snip/foo2.csproj 
    --configuration $(buildConfiguration) 
    -p:Version=$(Build.BuildNumber)
    -p:langversion=latest

注意最后一个参数...

testing azure-devops
1个回答
0
投票

我不确定为什么会出现这个问题......所以我希望得到一些帮助来解释这个问题

有一种情况可能会导致这个问题,但我不太确定它是否适用于您,您可以查看它。

当我们在<LangVersion>7.3</LangVersion>属性组中的项目文件中设置属性debug时:

enter image description here

但是当我们在Azure Devops中构建它时,我们在release文件中将构建配置设置为.yml

variables:
  buildConfiguration: 'Release'
....

这可能是您在使用Azure Devops构建时需要再次传递参数(-p:langversion=latest)的原因。

此外,最简单的方法是为所有项目配置(个人):

  • 右键单击YourProject,单击Properties
  • 如果尚未选择Build,请单击它
  • 将配置更改为All Configurations
  • 点击Advanced ...
  • 更改语言版本

希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.