[VS 2017] Razor Compilation CompilationFailedException
![[VS 2017] Razor Compilation CompilationFailedException](/content/images/size/w2000/2017/04/vs_2017-2.png)
Ola pessoALL,
Dando continuidade aos erros encontrados na migração para o VS 2017, hoje vamos falar de um outro erro comum na migração: Microsoft.AspNetCore.Mvc.Razor.Compilation.CompilationFailedException : One or more compilation failures ocurred
.
Esse erro é mais comum em projetos de testes que fazem integração com um site/api asp.net core, acontece porque por padrão os arquivos *.deps
não são copiados para o output nos projetos de testes.
[/jabaModeOn
Se voce deseja saber mais sobre testes de integração com .net core, Rodrigo Kono e eu gravamos um workshop completo abordando o tema. Esta bem completo, foram mais de 400 participantes e mais de 10 horas de conteúdo totalmente FREE. Para saber mais e assistir ao workshop click aqui
[/jabaModeOff
Solução - Configurar o projeto para copiar os arquivos *.deps
Confesso que esse erro deu um pouquinho mais de trabalho de achar a solução, depois de algumas tentativas e bastante procurar no SO e no GH, acabei achando essa issue:
https://github.com/aspnet/Hosting/issues/959#issuecomment-286351703
Vou reproduzir os passos aqui no post:
- No seu projeto de testes adicione um novo arquivo chamado
xunit.runner.json
, com o seguinte conteudo:
{
"shadowCopy": false
}
- Depois edite seu arquivo
.csproj
e adicione o seguinte conteudo:
<!-- Solves Problem#1 (binding error) https://github.com/Microsoft/vstest/issues/428. -->
<PropertyGroup>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>
<!-- Solves Problem#2 (404 when executing service calls hosted in other assemblies) -->
<!-- https://github.com/Microsoft/vstest/issues/196.-->
<ItemGroup>
<None Update="xunit.runner.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
<!-- https://github.com/NuGet/Home/issues/4412. -->
<Target Name="CopyDepsFiles" AfterTargets="Build" Condition="'$(TargetFramework)'!=''">
<ItemGroup>
<DepsFilePaths Include="$([System.IO.Path]::ChangeExtension('%(_ResolvedProjectReferencePaths.FullPath)', '.deps.json'))" />
</ItemGroup>
<Copy SourceFiles="%(DepsFilePaths.FullPath)" DestinationFolder="$(OutputPath)" Condition="Exists('%(DepsFilePaths.FullPath)')" />
</Target>
- Salve o arquivo e rode seus testes novamente.
Prontinho pessoALL, agora não teremos mais Microsoft.AspNetCore.Mvc.Razor.Compilation.CompilationFailedException : One or more compilation failures ocurred
.
Espero ter ajudado, até a próxima.