Hoje, depois de implantar algumas alterações em um site C # MVC que executo, voltei para fazer mais algumas modificações e encontrei este erro:
Membro necessário do compilador ausente System.Runtime.CompilerServices.ExtensionAttribute..ctor
O erro é um pouco vago (além da descrição, obviamente), pois não me dá um arquivo, linha ou coluna para referência, apenas o projeto. Além disso, ele gera o erro um total de 20 vezes. Só fiz três alterações no código entre o momento da implantação (estava totalmente funcional naquela época) e agora. Revertei minhas alterações e ainda está jogando o mesmo erro que não faz sentido para mim.
Não encontrei muitas informações sobre esse erro no SO ou no Google, além da solução desse pessoal e algumas referências a alguns erros de projeto Mono (não estou usando Mono). A solução que o cara acima dá requer a adição de uma definição de classe que permitirá ao compilador resolver a referência. Particularmente, não quero fazer isso porque não precisei fazer isso até este ponto e só vai bagunçar meu código.
Só estou curioso se alguém já passou por isso antes. Desde já, obrigado!
fonte
Respostas:
Este erro geralmente significa que seu projeto está compilando em .NET 2.0 ou você não está referenciando a versão correta de System.Core.dll
Para uma pergunta quase duplicada, consulte Erro ao usar métodos de extensão em C #
fonte
No meu caso foi porque o projeto não estava referenciando
Microsoft.CSharp
. Depois de adicionar uma referência a esse assembly, ele compilou perfeitamente.fonte
Não sei se mais alguém já passou por isso, mas de repente vejo esse erro depois de adicionar alguns códigos utilizando
dynamic
tipos e incorporar WebAPI em um projeto que se originou como um aplicativo TypeScript no VS2013. Simplesmente adicionar uma referência ao Microsoft.CSharp resolveu meu problema.Espero que isso ajude mais alguém.
fonte
Eu também me deparei com essa situação hoje. No meu caso, eu estava fazendo referência à dll Newton.Json.Net v3.5 em meu aplicativo .NET 4.0. Percebi que nem estava usando essa biblioteca, portanto, uma vez que a removi das minhas referências, ela não me dava mais o erro do compilador.
Problema resolvido!!!
fonte
O erro real vem do fato de que o assembly 2.0 que causa o erro contém este código:
O código acima permite que o .NET 2.0 Assembly use métodos de extensão (consulte Usando métodos de extensão no .NET 2.0? ). Embora isso confunda o compilador se você direcionar o .NET 4.0 e fazer referência a um assembly 2.0 (contendo o código acima), pois mscorlib.dll (4.0) contém a mesma classe no mesmo namespace.
Eu consertei isso
fonte
Escrever este código em algum lugar do seu projeto pode resolver o seu problema. Funciona para mim
fonte
NLog.dll 2.0 referenciado de um projeto .NET 4.0 também pode causar isso.
fonte
Provavelmente você usa a
dynamic
palavra-chave no projeto de biblioteca de classes .NetStandard. Nesse caso, você precisa adicionar uma referência àMicrosoft.CSharp
biblioteca no projeto. Espero que isso resolva seu problema.fonte
Não tenho uma solução correta, mas adicionarei meu ponto de dados:
No meu caso, o erro é causado pela referência a GoogleSearchAPINet20
Aqui está o que acontece:
Não estou fazendo referência a System.Core.dll em minha solução e minha estrutura de destino é .NET 4.
Estou um pouco irritado neste ponto ...
fonte
Recebi este erro ao tentar usar tarefas assíncronas no .NET 4.0. Atualizar o Target Framework para 4.5.2 corrigiu o problema.
fonte
Eu atingi o mesmo conjunto de exceções depois de adicionar alguns métodos assíncronos a um projeto winforms. Eu precisava aumentar minha versão .NET de 4 para 4.5
fonte
Para mim, o problema ocorre quando adiciono o método assíncrono com async Task await no meu projeto .net4.0!
Com versões anteriores do .NET-Framework 4.5, você deve instalar este pacote:
ou
mais informações sobre Nuget ou Nuget
fonte