Uma implementação do Visual Basic incorporada aos produtos da Microsoft.
O erro acontece porque os assemblies de referência do .NET Framework 4.5 não estão na máquina, e não vão estar por instalação normal: a Microsoft não publica developer pack do 4.5. O download mais antigo disponível é o do 4.5.1. O 4.5 saiu de suporte em 13/01/2016.
Há dois caminhos.
1. Retargetar o projeto (recomendado)
Se você tem controle sobre o código, mude o Target Framework para uma versão suportada:
- Clique com o botão direito no projeto → Propriedades → Target Framework
- Ou edite o .csproj/.vbproj diretamente: <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
Versões ainda suportadas: 4.6.2 (até 13/01/2027), 4.7, 4.7.1, 4.7.2, 4.8 e 4.8.1. O 4.8 é o mais seguro se você não tem restrição de ambiente.
Vale saber que 4.5.2, 4.6 e 4.6.1 foram assinados com certificados SHA-1, e a própria Microsoft recomenda sair deles. Não adianta descer para 4.5.2 só para "ficar perto" do 4.5.
2. Manter o 4.5 (quando não dá para mudar o target)
A Microsoft publica os reference assemblies como pacote NuGet:
Microsoft.NETFramework.ReferenceAssemblies.net45
Se você compila por linha de comando (dotnet build ou msbuild), basta
adicionar o PackageReference e resolve.
No Visual Studio é diferente: ele procura os arquivos fisicamente no
disco, não no pacote. Nesse caso, baixe o .nupkg, abra como ZIP, e copie
o conteúdo de build\.NETFramework\v4.5\ para:
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5
Reinicie o Visual Studio depois.
(Essa segunda parte, de copiar para a pasta, não está na documentação oficial é solução conhecida da comunidade. O pacote NuGet em si é publicado pela Microsoft.)
Uma dúvida sobre o seu caso: a pergunta está marcada como Visual Basic for Applications, mas essa mensagem vem do MSBuild. O VBA do Office não gera esse erro.
Você consegue dizer:
- O que exatamente está compilando? Projeto no Visual Studio, suplemento VSTO do Office, ou build em servidor?
- Qual versão do Visual Studio (ou do MSBuild)?
- O erro aparece ao abrir o projeto ou ao compilar?
Com isso dá para apontar o caminho certo entre os dois acima.`