Continuou recebendo esse erro ao executar um novo aplicativo ASP.NET MVC (direto da Comunidade VS 2015) em uma máquina com Windows 2008 Server.
c#
asp.net
asp.net-mvc
iis
Kyle Carlson
fonte
fonte
Respostas:
Muitas pessoas estão se deparando com isso, então eu queria postar aqui.
Encontrei uma solução muito fácil graças a esse cara: Expertdebugger .
Simplesmente faça downgrade de sua versão de idioma de C # 6 para C # 5, assim:
<system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"> <providerOption name="CompilerVersion" value="v4.0"/> </compiler> <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+"> <providerOption name="CompilerVersion" value="v4.0"/> </compiler> </compilers> </system.codedom>
Mude
langversion:6
para a parte inferior de 6 para 5 -langversion:5
Consertou para mim. Agradecê-lo.
fonte
Se você gostaria de usar C # 6.0:
.config
arquivo para realizar as seguintes modificações.Procure
system.codedom
e modifique-o para que fique conforme mostrado abaixo:<system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" /> <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+" /> </compilers> </system.codedom>
fonte
Descobri que a causa direta do erro no meu caso foi:
isso faz sentido, pois o erro está afirmando que há uma opção inválida para o idioma.
mas isso estava funcionando bem antes - então deve ter sido selecionado. o que mudou? Acontece que um membro da minha equipe atualizou para vs 2017, enquanto eu ainda estava usando 2015. depois que ele fez alterações no projeto, a versão do idioma foi alterada e eu recebi essa alteração no controle de origem. mas a versão selecionada não estava disponível para minha versão de vs, então estava em branco - daí o erro. depois de selecionar um valor no menu suspenso de idiomas (eu escolhi o padrão), um novo erro apareceu. o novo erro estava causando uma falha de construção em qualquer linha de código que usava a versão mais recente do c #. Eu mudei o código para executar as mesmas funções, mas com a sintaxe da minha versão c # e o problema resolvido.
então, embora a causa direta do erro fosse de fato uma seleção inválida da versão do idioma, a causa raiz era devido a diferentes versões vs / c # conflitantes.
fonte
No meu caso, o erro foi:
Abri meu arquivo .csproj com o bloco de notas e vi esta linha:
Eu mudei o último para um inteiro no intervalo de 1 a 6
<LangVersion>6</LangVersion>
O erro desapareceu!
fonte
No meu caso, eu estava usando o MSBuild.exe errado, aquele encontrado em:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319
Para resolver o erro, atualizei minha variável de ambiente PATH para começar a usar o Visual Studio 2017 MSBuild.exe:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSbuild.exe
Por favor, veja este link para detalhes: Erro CS1056: Caractere inesperado '$' executando o msbuild em um processo de integração contínua tfs
fonte
no meu caso (projeto criado em outro sistema):
Eu posso executar este projeto.
fonte
Em vez de alterar a versão do idioma de 6 para 5, altere o atributo "tipo" na tag do compilador de
Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
para
Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
fonte
Atualize o pacote Nuget Microsoft.Net.Compilers para a versão mais recente (pelo menos 2.x)
fonte
A solução mais fácil para mim foi atualizar os compiladores .Net via Gerenciador de pacotes
Pacote de instalação Microsoft.Net.Compilers
e, em seguida, alterando as linhas Web.Config para este
<system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" /> <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+" /> </compilers> </system.codedom>
fonte
Acontece que isso era um problema, porque o projeto ASP.NET MVC 4 fazia referência a uma versão específica do pacote Microsoft.Net.Compilers. O Visual Studio estava usando o compilador deste pacote específico, e não o compilador que foi instalado de outra forma no computador.
Um aviso ou algo assim teria sido bom do VS2019 :-)
A solução então é atualizar o pacote Microsoft.Net.Compilers para uma versão mais recente.
A versão 1.x é para C # 6 A versão 2.x é para C # 7 A versão 3.x é para C # 8 Como eu consegui resolver isso não foi imediatamente óbvio. O Visual Studio poderia ter sugerido ou sugerido que, ao selecionar uma nova versão nas configurações do projeto, essa configuração agora entrava em conflito com o pacote instalado no projeto.
(Acabei ativando o log do MSBuild no nível de diagnóstico para descobrir qual CSC.EXE o IDE está realmente tentando usar)
https://developercommunity.visualstudio.com/content/problem/519531/c-7x-versions-do-not-seem-to-work-in-vs2019.html
fonte
Se acima de todas as opções não estão funcionando e você usou pacotes nuget como Microsoft.Net.Compilers e CodeDom e ainda não está funcionando, há um problema com o arquivo de projeto aberto do seu arquivo de projeto. O arquivo de projeto está usando uma das opções do compilador que não oferece suporte ao idioma selecionado. Abra o arquivo de projeto com notepad ++ e remova a seguinte linha.
Arquivo de projeto original
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="..\packages\Microsoft.Net.Compilers.Toolset.3.7.0\build\Microsoft.Net.Compilers.Toolset.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.Toolset.3.7.0\build\Microsoft.Net.Compilers.Toolset.props')" /> <Import Project="..\packages\Microsoft.Net.Compilers.3.7.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.3.7.0\build\Microsoft.Net.Compilers.props')" /> <Import Project="..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" /> <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props')" /> <!--Don't delete below one--> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
Remova as seguintes linhas
<Import Project="..\packages\Microsoft.Net.Compilers.Toolset.3.7.0\build\Microsoft.Net.Compilers.Toolset.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.Toolset.3.7.0\build\Microsoft.Net.Compilers.Toolset.props')" /> <Import Project="..\packages\Microsoft.Net.Compilers.3.7.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.3.7.0\build\Microsoft.Net.Compilers.props')" /> <Import Project="..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" /> <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props')" />
fonte
Eu atualizei o Microsoft.Net.Compilers para a versão 2.0 ou superior
Veja isso
fonte
Eu apenas mudei o
langversion
paradefault
e funcionou para mim. VS 2015<system.codedom> <compilers> <compiler language=”c#;cs;csharp” extension=”.cs” type=”Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″ warningLevel=”4″ compilerOptions=”/langversion:default /nowarn:1659;1699;1701″> <providerOption name=”CompilerVersion” value=”v4.0″/> </compiler> <compiler language=”vb;vbs;visualbasic;vbscript” extension=”.vb” type=”Microsoft.VisualBasic.VBCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″ warningLevel=”4″ compilerOptions=”/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+”> <providerOption name=”CompilerVersion” value=”v4.0″/> </compiler> </compilers>
fonte
Limpar solução e construir novamente No meu caso, quaisquer que sejam as configurações anteriores, estavam bloqueando devido à incompatibilidade. Importei um novo projeto e o construí, tentei mudar as versões e tudo. limpar as soluções e construir funcionou para mim.
fonte
No meu caso, eu estava baixando uma biblioteca com código de amostra de implementação de keycloak por mattorg do GITHUB: https://github.com/mattmorg55/Owin.Security.Keycloak/tree/dev/samples
A solução foi bem fácil, pois usei o .Net Framework 4.6.1, mas o projeto me implorou no início para usar o 4.6.2. Embora eu tenha baixado, ele foi primeiro escolhido ativamente, ao reiniciar todas as instâncias do Visual Studion (ou melhor, fechar todas as instâncias). O projeto foi manipulado para 4.6.1 (embora eu não desejasse e tenha escolhido isso).
Então, depois de escolher a configuração novamente para escolher .Net Framework 4.6.1, o erro desapareceu imediatamente.
fonte
No meu caso, a mensagem de erro foi:
Conforme declarado neste problema do GitHub e nesta postagem da VS Developer Community , parece ser um bug em um pacote Microsoft.CodeDom.Providers.DotNetCompilerPlatform NuGet mais antigo.
Depois de atualizar este pacote NuGet para 3.6.0, o erro ainda persistia em meu aplicativo da web.
Solução
Descobri que tive que excluir uma pasta "bin \ Roslyn" antiga em meu aplicativo da Web para fazer isso funcionar.
Parece que o pacote NuGet Microsoft.CodeDom.Providers.DotNetCompilerPlatform mais recente (3.6.0 no meu caso) não traz mais uma pasta "Rosyln" própria e, se presente, a pasta "Roslyn" antiga teve precedência durante a compilação.
fonte
Isso aconteceu comigo quando retirei meu repositório após movê-lo para um novo local. A solução foi descarregar e recarregar cada projeto que estava apresentando esse erro.
Tentei algumas outras opções, mas nada funcionou para mim. Também nesta situação, meus arquivos de configuração foram configurados para usar a versão 6 da linguagem, portanto, configurá-los para o padrão não corrigiu o problema.
fonte