Guía para actualizar scripts .yml para MSVC141 en GitHub

Guía para actualizar scripts .yml para MSVC141 en GitHub
Guía para actualizar scripts .yml para MSVC141 en GitHub

Resolver problemas de MSVC141 en acciones de GitHub

Estamos trabajando en un proyecto de Visual Studio 2019 que recientemente comenzó a generar excepciones relacionadas con archivos faltantes, específicamente 'atlbase.h'. Este problema parece deberse a la ausencia del conjunto de herramientas MSVC141, que no era necesario hasta hace unos meses.

En este artículo, lo guiaremos sobre cómo actualizar sus scripts .yml en GitHub Actions para incluir el conjunto de herramientas MSVC141. Esto garantiza una compilación de proyectos fluida y evita el error "no se puede abrir el archivo incluido", lo que le ayuda a mantener la productividad en su flujo de trabajo de desarrollo.

Dominio Descripción
uses: microsoft/setup-msbuild@v1.1 Configura MSBuild para GitHub Actions, lo que permite la creación de proyectos .NET.
vs-version: 2019 Especifica la versión de Visual Studio que se utilizará, lo que garantiza la compatibilidad con el conjunto de herramientas MSVC141.
msbuild-version: 16.x Define la versión de MSBuild, alineándose con el conjunto de herramientas MSVC141 requerido para la compilación.
extenda/actions/setup-nuget-sources@v0 Configura fuentes NuGet en GitHub Actions, esencial para restaurar las dependencias del proyecto.
nuget restore POS.sln Restaura paquetes NuGet para la solución especificada, resolviendo todas las dependencias antes de la compilación.
Copy-Item Copia archivos de una ubicación a otra en PowerShell, que se utiliza aquí para manejar plantillas de bases de datos.
Start-Process Inicia un nuevo proceso en PowerShell, útil para ejecutar instaladores u otros ejecutables.
vswhere.exe Una utilidad para localizar instalaciones de Visual Studio, utilizada para comprobar la presencia de MSVC141.

Integración del conjunto de herramientas MSVC141 en GitHub Actions

Los scripts proporcionados anteriormente garantizan que el conjunto de herramientas MSVC141 esté incluido en su flujo de trabajo de GitHub Actions. El primer script actualiza el archivo de configuración YAML para incluir los pasos necesarios para configurar las herramientas y los entornos necesarios. Esto incluye configurar MSBuild usando microsoft/setup-msbuild@v1.1, especificando la versión de Visual Studio con vs-version: 2019, y garantizar que el msbuild-version: 16.x se utiliza. Estos pasos garantizan que el entorno de compilación esté configurado correctamente para usar MSVC141.

Además, el script de PowerShell comprueba la presencia del conjunto de herramientas MSVC141 mediante vswhere.exe. Si no se encuentra, el script inicia el proceso de instalación ejecutando Start-Process con los argumentos necesarios para instalar los componentes que faltan. Este enfoque automatizado garantiza que el conjunto de herramientas necesario esté disponible, evitando que fatal error C1083 relacionado con archivos de inclusión faltantes como 'atlbase.h'. Si sigue estos pasos, podrá mantener un proceso de compilación estable y consistente para sus proyectos de Visual Studio 2019 en GitHub Actions.

Actualice el script .yml para incluir el conjunto de herramientas MSVC141

Configuración YAML de acciones de GitHub

name: Pull request - Windows
on:
  pull_request:
    paths-ignore:
      - 'Engine/Engine.Android/'
      - 'Mobile/'
jobs:
  build:
    runs-on: windows-2022
    defaults:
      run:
        shell: pwsh
    env:
      DEFAULT_VERSION: v17.4.500
      SolutionDir: ${{ github.workspace }}
    steps:
      - name: Checkout
        uses: actions/checkout@v3
        with:
          token: ${{ secrets.RS_GITHUB_TOKEN }}
          submodules: true
      - uses: actions/setup-java@v4
        with:
          distribution: 'temurin'
          java-version: '11'
      - name: Setup MSBuild
        uses: microsoft/setup-msbuild@v1.1
      - name: Install Visual Studio
        uses: microsoft/setup-msbuild@v1.1
        with:
          vs-version: 2019
          msbuild-version: 16.x
      - name: Setup NuGet sources
        uses: extenda/actions/setup-nuget-sources@v0
        with:
          config-file: NuGet.Config
          sources: |
            [{
              "name": "Nexus",
              "source": "https://repo.extendaretail.com/repository/nuget-hosted/",
              "username": "${{ secrets.NEXUS_USERNAME }}",
              "password": "${{ secrets.NEXUS_PASSWORD }}",
              "apikey": "${{ secrets.NUGET_API_KEY }}"
            }]
      - name: Restore NuGet packages
        run: nuget restore POS.sln
      - name: Determine version
        id: ver
        run: .\Build\determine-version.ps1
      - name: Update assemblies
        run: .\Build\update-assemblies.ps1 ${{ steps.ver.outputs.version }} ${{ steps.ver.outputs.full-version }}
      - name: Generate database template
        run: |
          .\Common\Database\AppVeyor\gen-databases.ps1 Common\Database abcDb
          Copy-Item abcDb\Template.db -Destination Common\Database
      - name: Build solution
        run: msbuild POS.sln @Build\WindowsBuildParams.rsp
      - name: Build installation packages
        run: |
          .\Build\exit-on-failure.ps1
          msbuild Installation\Installation.sln @Build\WindowsBuildParams.rsp -p:BuildNumber=${{ steps.ver.outputs.full-version }}
          ExitOnFailure
          Get-ChildItem Installation\Bin\Release
          Rename-Item -Path Installation\Bin\Release\abc.msi -NewName abc-v${{ steps.ver.outputs.full-version }}.msi
          Rename-Item -Path Installation\Bin\Release\abc.exe -NewName abc-v${{ steps.ver.outputs.full-version }}.exe
          Rename-Item -Path Installation\Bin\Release\VRRSSurfaceComponentsEditor.msi -NewName SurfaceComponentsEditor-v${{ steps.ver.outputs.full-version }}.msi
      - name: Generate customization package
        run: .\Common\Database\AppVeyor\gen-customization-zip.ps1 Common\Database ${{ steps.ver.outputs.full-version }}
      - name: Save abc Installer
        uses: actions/upload-artifact@v3
        with:
          name: abcInstaller-v${{ steps.ver.outputs.full-version }}
          path: Installation\Bin\Release\abc-*.msi
      - name: Save abc Setup
        uses: actions/upload-artifact@v3
        with:
          name: abcSetup-v${{ steps.ver.outputs.full-version }}
          path: Installation\Bin\Release\abc-*.exe
      - name: Save Database
        uses: actions/upload-artifact@v3
        with:
          name: Database-v${{ steps.ver.outputs.full-version }}
          path: Common\Database\CustomizationTemplate\*

Asegúrese de que el conjunto de herramientas MSVC sea correcto en las acciones de GitHub

Script de PowerShell para comprobar e instalar MSVC141

$vswherePath = "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe"
if (-Not (Test-Path $vswherePath)) {
    Write-Error "vswhere.exe not found at $vswherePath"
    exit 1
}
$vsInstallPath = & $vswherePath -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath
if (-Not $vsInstallPath) {
    Write-Output "MSVC141 not found. Installing..."
    Start-Process -FilePath "cmd.exe" -ArgumentList "/c start /wait vs_installer.exe --quiet --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 --includeRecommended --includeOptional" -Wait
    if ($?) {
        Write-Output "MSVC141 installation completed."
    }
    else {
        Write-Error "Failed to install MSVC141."
        exit 1
    }
} else {
    Write-Output "MSVC141 already installed at $vsInstallPath"
}
exit 0

Garantizar la compatibilidad con conjuntos de herramientas MSVC en GitHub Actions

Mantener la compatibilidad con varios conjuntos de herramientas en un entorno de integración continua (CI) como GitHub Actions es crucial para garantizar compilaciones consistentes y minimizar errores. Un aspecto clave es mantener sus archivos de configuración actualizados con las herramientas y dependencias necesarias. En el caso de MSVC141, es importante comprender que este conjunto de herramientas es esencial para ciertos proyectos, especialmente aquellos que dependen de bibliotecas y componentes de C++ más antiguos.

Incluir el conjunto de herramientas MSVC141 en su configuración de GitHub Actions implica no solo especificar la versión correcta de Visual Studio sino también garantizar que se resuelvan todas las dependencias. Esto incluye configurar fuentes NuGet correctamente y usar utilidades como vswhere.exe para verificar instalaciones. Automatizar estos pasos dentro de su .yml y los scripts de PowerShell ayudan a prevenir errores de compilación y mantienen el proceso de CI/CD funcionando sin problemas, lo que en última instancia ahorra tiempo y recursos de desarrollo.

Preguntas y soluciones comunes para la integración de conjuntos de herramientas MSVC

  1. ¿Cómo especifico la versión de Visual Studio en GitHub Actions?
  2. Usar vs-version: 2019 en tus .yml configuración para establecer la versión deseada de Visual Studio.
  3. Qué es vswhere.exe ¿Y por qué se usa?
  4. vswhere.exe es una utilidad para localizar instalaciones de Visual Studio, asegurando que los conjuntos de herramientas necesarios estén disponibles.
  5. ¿Cómo puedo automatizar la instalación de componentes faltantes?
  6. Usar Start-Process en PowerShell para ejecutar el instalador con los argumentos necesarios para instalaciones desatendidas.
  7. ¿Por qué es importante configurar fuentes NuGet?
  8. La configuración de fuentes NuGet garantiza que se resuelvan todas las dependencias del proyecto, lo cual es crucial para compilaciones exitosas.
  9. ¿Cómo verifico la presencia del conjunto de herramientas MSVC141?
  10. Usar vswhere.exe en un script para verificar la ruta de instalación del conjunto de herramientas MSVC141.
  11. Que hace msbuild-version: 16.x ¿especificar?
  12. Especifica la versión de MSBuild que se utilizará, lo que garantiza la compatibilidad con el conjunto de herramientas MSVC141.
  13. ¿Cómo restauro paquetes NuGet en GitHub Actions?
  14. usa el comando nuget restore seguido de su archivo de solución, como dieciséis.
  15. ¿Cuál es el propósito de la Setup MSBuild ¿acción?
  16. Configura el entorno para usar MSBuild, necesario para crear proyectos .NET en GitHub Actions.
  17. ¿Cómo puedo cambiar el nombre de los artefactos de compilación automáticamente?
  18. Utilice comandos de PowerShell como Rename-Item para cambiar el nombre de los archivos según la versión de compilación.
  19. ¿Por qué incluir? distribution: 'temurin' en la configuración de Java?
  20. Esto especifica la distribución de JDK que se utilizará, lo que garantiza que esté instalada la versión correcta de Java para su proyecto.

Reflexiones finales sobre la integración de MSVC141

Garantizar que el conjunto de herramientas MSVC141 esté incluido en su flujo de trabajo de GitHub Actions es esencial para mantener la estabilidad y funcionalidad de sus proyectos de Visual Studio 2019. Al actualizar sus scripts .yml y automatizar el proceso de instalación, puede evitar errores de compilación comunes relacionados con archivos faltantes. Este enfoque proactivo no solo ahorra tiempo sino que también mejora la eficiencia de su proceso de CI/CD, lo que permite compilaciones de proyectos más fluidas y confiables.