Невозможно создать / протестировать тестовый проект .NET Core в DevOps Azure - недопустимая версия - PullRequest
3 голосов
/ 04 апреля 2019

Я пытаюсь запустить dotnet test в DevOps Azure, но получаю эту ошибку:

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

Обратите внимание на последний параметр ...

1 Ответ

0 голосов
/ 05 апреля 2019

Я не уверен, ПОЧЕМУ эта проблема происходит ... поэтому я хотел бы помочь с объяснением, что

Есть ситуация, которая может вызвать эту проблему, но я не совсемконечно, если это относится к вам, вы можете проверить это.

Когда мы установим свойство <LangVersion>7.3</LangVersion> в файле проекта, который был в группе свойств debug:

enter image description here

Но когда мы собираем его в Devops Azure, мы устанавливаем конфигурацию сборки на release, в вашем файле .yml:

variables:
  buildConfiguration: 'Release'
....

Это может быть причиной того, что вам необходимо снова передавать параметры (-p:langversion=latest) при сборке с помощью Devure для Azure.

Кроме того, самый простой способ сделать это для всех конфигураций проекта (персональный):

  • Щелкните правой кнопкой мыши YourProject, щелкните Properties

  • Нажмите Build, если он еще не выбран

  • Изменить конфигурацию на All Configurations

  • Нажмите Advanced ...

  • Измените языковую версию

Надеюсь, это поможет.

...