我正在尝试在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
注意最后一个参数...
我不确定为什么会出现这个问题......所以我希望得到一些帮助来解释这个问题
有一种情况可能会导致这个问题,但我不太确定它是否适用于您,您可以查看它。
当我们在<LangVersion>7.3</LangVersion>
属性组中的项目文件中设置属性debug
时:
但是当我们在Azure Devops中构建它时,我们在release
文件中将构建配置设置为.yml
:
variables:
buildConfiguration: 'Release'
....
这可能是您在使用Azure Devops构建时需要再次传递参数(-p:langversion=latest
)的原因。
此外,最简单的方法是为所有项目配置(个人):
YourProject
,单击Properties
Build
,请单击它All Configurations
Advanced
...希望这可以帮助。