A compilação Roslyn (.NET Compiler Platform), 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:
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 somente esses dois benefícios já valeria a pena usar o Roslyn. Existem mais recursos que o Roslyn possui e eu não citei aqui. Para detalhes veja as referências.
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 somente 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.