Pur*_*ome 5 testing azure-devops
我正在尝试在 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>
...
Run Code Online (Sandbox Code Playgroud)
这是我的文件的开始.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'
...
Run Code Online (Sandbox Code Playgroud)
我也曾<LangVersion>latest</LangVersion>在.csproj.
我已经三次检查项目文件中是否有该文件<LangVersion>,其中正在测试测试。
所以我似乎可以使用它,但我仍然不知道这是一个“黑客”解决方案还是正确的解决方案。但是,我仍然不确定为什么会出现这个问题。
我添加langver为 msbuild 属性:
dotnet test tests/snip/foo2.csproj
--configuration $(buildConfiguration)
-p:Version=$(Build.BuildNumber)
-p:langversion=latest
Run Code Online (Sandbox Code Playgroud)
注意最后一个参数...
我不确定为什么会发生这个问题......所以我希望得到一些帮助来解释这一点
有一种情况可能会导致这个问题,但我不太确定它是否适用于你,你可以检查一下。
当我们在项目文件中设置属性时<LangVersion>7.3</LangVersion>,该属性位于debug属性组中:
但是,当我们在 Azure Devops 中构建它时,我们将构建配置设置为release, 在您的.yml文件中:
variables:
buildConfiguration: 'Release'
....
Run Code Online (Sandbox Code Playgroud)
-p:langversion=latest这可能就是为什么在使用 Azure Devops 构建时需要再次传递参数 ( ) 的原因。
此外,对于所有项目配置来说最简单的方法(个人):
右键单击YourProject,单击Properties
Build如果尚未选择,请单击
将配置更改为All Configurations
点击Advanced...
更改语言版本
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
818 次 |
| 最近记录: |