我正在尝试在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>
,其中正在测试测试。
所以我似乎可以使它工作,但是我仍然不知道这是一个“ hack”解决方案还是正确的解决方案。但是,我仍然不确定为什么会发生此问题。
我添加了langver
作为msbuild属性:
dotnet test tests/snip/foo2.csproj
--configuration $(buildConfiguration)
-p:Version=$(Build.BuildNumber)
-p:langversion=latest
注意最后一个参数...
答案 0 :(得分:0)
我不确定为什么会发生此问题...所以我很乐意为您提供一些帮助来说明
有可能导致此问题的情况,但是我不确定它是否适用于您,您可以检查一下。
当我们在项目文件中设置属性<LangVersion>7.3</LangVersion>
时,该文件位于debug
属性组中:
但是,当我们在Azure Devops中对其进行构建时,我们在您的release
文件中将构建配置设置为.yml
:
variables:
buildConfiguration: 'Release'
....
这可能就是为什么在使用Azure Devops进行构建时需要再次传递参数(-p:langversion=latest
)的原因。
此外,针对所有项目配置(个人)最简单的方法:
右键单击YourProject
,然后单击Properties
单击Build
(如果尚未选择)
将配置更改为All Configurations
单击Advanced
...
更改语言版本
希望这会有所帮助。