Выполнение приложения Windows в действиях GitHub (ошибка: версия инструментов «15.0» не распознана)

#c# #continuous-integration #github-actions

#c# #непрерывная интеграция #github-действия

Вопрос:

Я расширяю приложение Windows, которое анализирует код C # и обнаруживает различные запахи. Расширение также будет работать в рамках действий GitHub. Цель состоит в том, чтобы проанализировать зафиксированный код как часть цикла CI с использованием этого приложения. Приложение представляет собой консольное приложение, основанное на .NET framework 4.7.2.

Чтобы интегрировать приложение с действиями GitHub, я собрал файл yml (приведенный ниже). Все остальное работает нормально, но приложение завершается сбоем со следующим сообщением.

 The tools version "15.0" is unrecognized. Available tools versions are "2.0", "3.5", "4.0". 
  

Я использую следующий файл yml. Как вы можете заметить, я добавил MSBuild в path , установил переменную среды для использования версии 15, установил переменную среды VSINSTALLDIR для установки Visual Studio 2017 и установил инструменты сборки. Тем не менее, я все еще получаю ошибку. Чего мне не хватает?

 Name: CI

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build:
    runs-on: windows-latest

    steps:
    - uses: actions/checkout@v2

    # Add  MsBuild to the PATH: https://github.com/microsoft/setup-msbuild
    - name: Setup MSBuild.exe
      uses: microsoft/setup-msbuild@v1.0.0
      with:
          vs-version: '15.0'

    - name: env var
      run: echo ::set-env name=VSINSTALLDIR::"C:Program Files (x86)Microsoft Visual Studio2017Enterprise"

    - name: checking sdk
      run: echo ::set-env name=VisualStudioVersion::"15.0"

    - name: install build tools
      run: |
        curl.exe -o buildtools.exe https://download.visualstudio.microsoft.com/download/pr/3e542575-929e-4297-b6c6-bef34d0ee648/639c868e1219c651793aff537a1d3b77/vs_buildtools.exe
        .buildtools.exe --quiet --wait --norestart --nocache --add Microsoft.VisualStudio.Workload.ManagedDesktopBuildTools --add Microsoft.VisualStudio.Workload.UniversalBuildTools --add Microsoft.VisualStudio.Workload.MSBuildTools --add Microsoft.VisualStudio.Workload.VCTools
    
    # Runs a set of commands using the runners shell
    - name: download DesigniteConsole.exe
      run: |
        curl.exe -o DesigniteConsole.zip "<download link>"
        powershell.exe -nologo -noprofile -command "amp; { Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory('DesigniteConsole.zip','.');}"
    
    - name: Run Designite application (it utilizes GitHub secrets and environment variables)
      run: |
        .DesigniteConsoleDesigniteConsole.exe -ci -repo ${{github.repository}} -pat ${{ secrets.PAT }} -k ${{ secrets.D_KEY }}
        cat Designite_output/DesigniteAnalysis.xml
  

Комментарии:

1. Привет, у меня есть один вопрос, является ли ваш инструмент сборки консольным приложением или приложением пользовательского интерфейса?

Ответ №1:

После стольких попыток я смог запустить его. Вот рабочий yaml.

 Name: CI

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build:
    runs-on: windows-latest

    steps:
    - uses: actions/checkout@v2

    - name: Run a one-line script
      run: Invoke-webrequest -uri  https://aka.ms/vs/15/release/vs_buildtools.exe -OutFile vs_buildtools.exe
      shell: powershell

    - name: install build tools
      run: .vs_buildtools.exe --wait --norestart --passive --installPath "C:Program Files (x86)Microsoft Visual Studio2017BuildTools" --add Microsoft.VisualStudio.Workload.ManagedDesktopBuildTools --add Microsoft.VisualStudio.Workload.MSBuildTools
      shell: cmd
    
    # Runs a set of commands using the runners shell
    - name: download DesigniteConsole.exe
      run: |
        curl.exe -o DesigniteConsole.zip "<download link>"
        powershell.exe -nologo -noprofile -command "amp; { Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory('DesigniteConsole.zip','.');}"
    
    - name: Run Designite application (it utilizes GitHub secrets and environment variables)
      run: |
        .DesigniteConsoleDesigniteConsole.exe -ci -repo ${{github.repository}} -pat ${{ secrets.PAT }} -k ${{ secrets.D_KEY }}
        cat Designite_output/DesigniteAnalysis.xml
  

Ответ №2:

Надеюсь, я правильно понял ваш вопрос.

Проверьте эту проблему https://github.com/microsoft/setup-msbuild/issues/18#issuecomment-644485409

На размещенных агентах установлена только последняя версия VS. Флаг версии действительно присутствует в случае изменений и / или у вас есть автономные агенты.

или

https://github.com/microsoft/setup-msbuild/issues/5#issue-588501457

В последнее время исполнителю не удается выполнить этот движок при указании аргумента версии. Обходной путь: удалите любое использование аргумента vs-version для действия и оставьте его по умолчанию последним.