.NET

27 jun, 2016

ASP .NET – O compilador Roslyn (csc.exe e vbc.exe ) e a hospedagem compartilhada

Publicidade

Neste artigo, vou comentar sobre o Roslyn, o novo compilador da plataforma .NET e sua utilização em projetos web criados no .NET 4.5.

A compilação Roslyn agora é padrão a partir da versão 4.5 da plataforma .NET, e isso significa que se você criar qualquer aplicação web, Web Forms ou MVC, você terá o compilador Roslyn pré-instalado em seu projeto na pasta bin dentro da pasta Roslyn:

net_rosl11

Porque usar a compilação Roslyn ?

Ao usar a compilação Roslyn, você tem acesso a muitos recursos durante o desenvolvimento do seu aplicativo e também durante a implantação no servidor.

Apenas para citar algumas das vantagens:

  • Durante o desenvolvimento da aplicação

Antes do Roslyn, quando você fazia qualquer alteração no seu código (C#. VB .NET), era preciso realizar um build para ver o resultado no navegador. Com o Rosyln isso não é mais necessário.

  • Durante a implantação no servidor

Ao desenvolver uma aplicação Web, escrevemos código C# e HTML mesclados nas páginas ASPX ou nas views MVC e isso requer algum tipo de compilação para exibir o resultado ao usuário, afetando o tempo de carregamento da página. Dessa forma, usando o Roslyn, essa compilação não será necessária e o tempo de carga da página vai melhorar.

Assim, só por esses dois benefícios já valeria a pena usar o Roslyn. Existem mais recursos que o Roslyn possui e eu não citei aqui.

O problema do Roslyn em hospedagem compartilhada

Se você está tentando publicar sua aplicação com o Roslyn em hospedagem compartilhada, você pode ter problemas.

Quando vamos fazer a implantação de uma aplicação no servidor, ela é executada no modo Full Trust (confiança total), e, empresas de hospedagem compartilhadas não permitem que aplicativos executem no modo Full Trust. Em geral, elas substituem o Full Trust por Medium Trust devido a restrições de segurança, visto que elas hospedam sites de diversos clientes e, assim, evitam que uma aplicação web de um cliente afete a aplicação de outro cliente.

A compilação Roslyn só vai funcionar em modo Full Trust e, dessa forma, em ambientes compartilhados, você terá problemas se a sua hospedagem não permitir esse modo.

Se a hospedagem compartilhada não der suporte ao modo Full Trust, você não poderá implantar a sua aplicação usando o Roslyn.

O que fazer agora?

Como implantar a sua aplicação web sem o Roslyn em servidores compartilhados?

Felizmente você pode implantar a sua aplicação sem o Roslyn e não precisa fazer nenhuma mudança no código.

Abra a janela do Gerenciador de pacotes NuGet e desinstale os pacotes:

  • “Microsoft.CodeDom.Providers.DotNetCompilerPlatform”
  • “Microsoft.Net.Compilers”

Esta desinstalação também vai remover a configuração CodeDom do arquivo web.config e isso vai resolver o problema.

E estamos conversados!