Укажите фреймворк / платформу в Azure конвейер yml - PullRequest
0 голосов
/ 19 марта 2020

Я хочу сказать Azure запускать тесты на платформе и платформе, фактически используемых моим тестовым проектом. Согласно Microsoft ,

Тесты, предназначенные для базовой платформы. NET, можно выполнить, указав соответствующее целевое значение инфраструктуры.

Но как я это сделал?

Кроме того, в выводе журнала говорится, что существует проблема с разными платформами. Я не уверен, как решить это либо. Я попытался вставить платформу в свой yml, но это не помогает.

Вот мой текущий yml:

- job: Test
  dependsOn: SetBuildName

  pool:
    vmImage: 'windows-2019'

  variables:
    solution: '**/MyTestSolution.sln'
    buildPlatform: 'x86|x64|ARM'
    buildConfiguration: 'Release'
    appxStagingDir: '$(build.artifactStagingDirectory)\AppxPackages\\'

  steps:
  - task: NuGetToolInstaller@1
    inputs:
      versionSpec: '5.4.0'
  - task: NuGetCommand@2
    inputs:
      restoreSolution: '$(solution)'    

  - task: VersionAPPX@2
    inputs:
      Path: '$(Build.SourcesDirectory)'
      VersionNumber: '$(versionNumber)'
      InjectVersion: true
      OutputVersion: 'OutputedVersion'  

  - task: VSBuild@1
    inputs:
      platform: 'x86'   #Changing this to AnyCPU had no effect.
      solution: '$(solution)'
      configuration: '$(buildConfiguration)'
      msbuildArgs: '/t:Restore'

  - task: VSBuild@1
    inputs:
      platform: 'x86'
      solution: '$(solution)'
      configuration: '$(buildConfiguration)'
      msbuildArgs: '/p:AppxBundlePlatforms="$(buildPlatform)"
                    /p:AppxPackageDir="$(appxStagingDir)"
                    /p:AppxBundle=Always
                    /p:UapAppxPackageBuildMode=Sideload
                    /p:AppxPackageSigningEnabled=true
                    /p:VersionPrefix="$(versionNumber)"
                    /p:VersionSuffix="$(version.SpecialBuild)"
                    /p:SourceRevisionId="$(Build.SourceVersion)"'

А вот выдержка из журнала:

2020-03-19T12:28:57.5842598Z Test run will use DLL(s) built for framework .NETFramework,Version=v4.0 and platform X86. Following DLL(s) do not match framework/platform settings.
2020-03-19T12:28:57.5843802Z MyProject.Test.dll is built for Framework .NETCoreApp,Version=v3.1 and Platform AnyCPU.

Лучшим решением было бы заставить его использовать то, против чего построен проект. Но если это невозможно, я бы предпочел указать NETCoreApp 3.1 и AnyCPU.

1 Ответ

1 голос
/ 20 марта 2020

Тесты, предназначенные для базовой платформы. NET, можно выполнить, указав соответствующее значение целевой платформы.

В VSTest@2 задаче есть один аргумент с именами otherConsoleOptions , Он может передавать некоторые дополнительные опции инструменту vstest.console.exe, включая платформа , каркас и et c.

Примечание: platfrom аргумент задачи только для отчетности целей.

Вот что я использую в своем YAML:

- task: VSTest@2
  inputs:
    testSelector: 'testAssemblies'
    testAssemblyVer2: |
      **\Release\UnitTestProject1.build.appxrecipe
      !**\*TestAdapter.dll
      !**\obj\**
    searchFolder: '$(System.DefaultWorkingDirectory)'
    otherConsoleOptions: '/Platform:x86 /Framework:Framework45'
    platform: 'x86|x64'

Просто замените значение otherConsoleOptions на основе вашего фактического спроса следующим образом:

otherConsoleOptions: '/Platform:{platform type: x86/x64/ARM} /Framework:{Framwork version}'

Вышеуказанный метод используется для создания platform/framwork конфигурации в файле yml.

Но есть и другой способ достижения этого: укажите platform type и framwork version в вашем runsetting файле .

<RunSettings>
  <!-- Configurations that affect the Test Framework -->
  <RunConfiguration>
    ...
    ...
    <TargetPlatform>x86</TargetPlatform>
    <TargetFrameworkVersion>Framework40</TargetFrameworkVersion>
    ....
    ....
  </RunConfiguration>
  ...
...
</RunSettings>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...