Resolvendo problemas de MSVC141 em ações do GitHub
Estamos trabalhando em um projeto do Visual Studio 2019 que recentemente começou a lançar exceções relacionadas a arquivos ausentes, especificamente 'atlbase.h'. Este problema parece ser devido à ausência do conjunto de ferramentas MSVC141, que não era necessário até alguns meses atrás.
Neste artigo, orientaremos você sobre como atualizar seus scripts .yml no GitHub Actions para incluir o conjunto de ferramentas MSVC141. Isso garante a construção tranquila do projeto e evita o erro 'não é possível abrir o arquivo incluído', ajudando você a manter a produtividade em seu fluxo de trabalho de desenvolvimento.
Comando | Descrição |
---|---|
uses: microsoft/setup-msbuild@v1.1 | Configura o MSBuild para GitHub Actions, permitindo a construção de projetos .NET. |
vs-version: 2019 | Especifica a versão do Visual Studio a ser usada, garantindo a compatibilidade com o conjunto de ferramentas MSVC141. |
msbuild-version: 16.x | Define a versão do MSBuild, alinhando-se com o conjunto de ferramentas MSVC141 necessário para compilação. |
extenda/actions/setup-nuget-sources@v0 | Configura fontes NuGet em GitHub Actions, essenciais para restaurar dependências do projeto. |
nuget restore POS.sln | Restaura pacotes NuGet para a solução especificada, resolvendo todas as dependências antes da compilação. |
Copy-Item | Copia arquivos de um local para outro no PowerShell, usado aqui para lidar com modelos de banco de dados. |
Start-Process | Inicia um novo processo no PowerShell, útil para executar instaladores ou outros executáveis. |
vswhere.exe | Um utilitário para localizar instalações do Visual Studio, usado para verificar a presença do MSVC141. |
Integrando o conjunto de ferramentas MSVC141 em ações do GitHub
Os scripts fornecidos acima garantem que o conjunto de ferramentas MSVC141 esteja incluído no fluxo de trabalho do GitHub Actions. O primeiro script atualiza o arquivo de configuração YAML para incluir as etapas necessárias para configurar as ferramentas e os ambientes necessários. Isso inclui configurar o MSBuild usando , especificando a versão do Visual Studio com , e garantindo que o é usado. Estas etapas garantem que o ambiente de compilação esteja configurado corretamente para usar MSVC141.
Além disso, o script do PowerShell verifica a presença do conjunto de ferramentas MSVC141 usando . Se não for encontrado, o script inicia o processo de instalação executando com os argumentos necessários para instalar os componentes ausentes. Esta abordagem automatizada garante que o conjunto de ferramentas necessário esteja disponível, evitando o relacionado à falta de arquivos include como 'atlbase.h'. Seguindo essas etapas, você pode manter um processo de build estável e consistente para seus projetos do Visual Studio 2019 no GitHub Actions.
Atualize o script .yml para incluir o conjunto de ferramentas MSVC141
Configuração YAML de ações do 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\*
Garanta o conjunto de ferramentas MSVC correto nas ações do GitHub
Script do PowerShell para verificação e instalação do 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
Garantindo compatibilidade com conjuntos de ferramentas MSVC em ações do GitHub
Manter a compatibilidade com vários conjuntos de ferramentas em um ambiente de integração contínua (CI), como GitHub Actions, é crucial para garantir compilações consistentes e minimizar erros. Um aspecto importante é manter seus arquivos de configuração atualizados com as ferramentas e dependências necessárias. No caso do MSVC141, é importante entender que esse conjunto de ferramentas é essencial para determinados projetos, especialmente aqueles que dependem de bibliotecas e componentes C++ mais antigos.
Incluir o conjunto de ferramentas MSVC141 na configuração do GitHub Actions envolve não apenas especificar a versão correta do Visual Studio, mas também garantir que todas as dependências sejam resolvidas. Isso inclui configurar fontes NuGet corretamente e usar utilitários como para verificar as instalações. Automatizando essas etapas em seu e os scripts do PowerShell ajudam a evitar falhas de compilação e mantêm seu pipeline de CI/CD funcionando perfeitamente, economizando tempo e recursos de desenvolvimento.
- Como especifico a versão do Visual Studio em GitHub Actions?
- Usar na tua configuração para definir a versão desejada do Visual Studio.
- O que é e por que é usado?
- é um utilitário para localizar instalações do Visual Studio, garantindo que os conjuntos de ferramentas necessários estejam disponíveis.
- Como posso automatizar a instalação de componentes ausentes?
- Usar no PowerShell para executar o instalador com os argumentos necessários para instalações autônomas.
- Por que é importante configurar fontes NuGet?
- A configuração de fontes do NuGet garante que todas as dependências do projeto sejam resolvidas, o que é crucial para compilações bem-sucedidas.
- Como verifico a presença do conjunto de ferramentas MSVC141?
- Usar em um script para verificar o caminho de instalação do conjunto de ferramentas MSVC141.
- O que especificamos?
- Especifica a versão do MSBuild a ser usada, garantindo compatibilidade com o conjunto de ferramentas MSVC141.
- Como restauro pacotes NuGet em GitHub Actions?
- Use o comando seguido pelo seu arquivo de solução, como .
- Qual é o propósito do Ação?
- Ele configura o ambiente para usar o MSBuild, necessário para construir projetos .NET em GitHub Actions.
- Como posso renomear artefatos de construção automaticamente?
- Use comandos do PowerShell como para renomear arquivos com base na versão de compilação.
- Por que incluir na configuração do Java?
- Isso especifica a distribuição JDK a ser usada, garantindo que a versão correta do Java esteja instalada para o seu projeto.
Garantir que o conjunto de ferramentas MSVC141 esteja incluído no fluxo de trabalho do GitHub Actions é essencial para manter a estabilidade e a funcionalidade dos seus projetos do Visual Studio 2019. Ao atualizar seus scripts .yml e automatizar o processo de instalação, você pode evitar erros comuns de compilação relacionados a arquivos ausentes. Essa abordagem proativa não apenas economiza tempo, mas também aumenta a eficiência do seu pipeline de CI/CD, permitindo construções de projetos mais suaves e confiáveis.