[c#] “컴파일러 필수 멤버 누락”오류가 거의 코드 변경없이 여러 번 발생 함

오늘 내가 실행하는 C # MVC 사이트에 몇 가지 변경 사항을 배포 한 후 다시 몇 가지 수정을 수행 한 후이 오류가 발생했습니다.

누락 된 컴파일러 필수 멤버 System.Runtime.CompilerServices.ExtensionAttribute..ctor

오류는 파일, 줄 또는 참조 할 열을 제공하지 않고 프로젝트 만 제공하므로 약간 모호합니다 (분명히 설명이 아닙니다). 또한 총 20 회 오류를 발생시킵니다. 배포 한 시점 (당시에는 완전히 작동 함)과 지금 사이에 코드를 세 번만 변경했습니다. 변경 사항을 되돌 렸지만 여전히 똑같은 오류가 발생하여 의미가 없습니다.

나는 이 사람들의 솔루션과 일부 Mono 프로젝트 오류에 대한 몇 가지 참조를 제외하고 SO 또는 Google 에서이 오류에 대한 많은 정보를 찾지 못했습니다 (Mono를 사용하지 않습니다). 위의 솔루션은 컴파일러가 참조를 해결할 수 있도록 클래스 정의를 추가해야합니다. 이 시점까지 할 필요가 없었고 코드가 흐트러 질 것이기 때문에 특별히하고 싶지는 않습니다.

누군가이 전에 이것을 경험했는지 궁금합니다. 미리 감사드립니다!



답변

이 오류는 일반적으로 프로젝트가 .NET 2.0에 대해 컴파일 중이거나 올바른 버전의 System.Core.dll을 참조하지 않음을 의미합니다.

거의 중복되는 질문 은 C #에서 확장 메서드를 사용할 때 오류를 참조하세요 .


답변

제 경우에는 프로젝트가 참조하지 않았기 때문 Microsoft.CSharp입니다. 해당 어셈블리에 대한 참조를 추가하면 제대로 컴파일되었습니다.


답변

다른 사람이 이것을 경험했는지는 모르지만 dynamic유형을 활용하는 코드를 추가 하고 VS2013에서 TypeScript 응용 프로그램으로 시작된 프로젝트에 WebAPI를 통합 한 후 갑자기이 오류 가 발생합니다. Microsoft.CSharp에 대한 참조를 추가하기 만하면 문제가 해결되었습니다.

이것이 다른 사람에게 도움이되기를 바랍니다.


답변

오늘도 이런 상황에 부딪 혔습니다. 제 경우에는 .NET 4.0 응용 프로그램에서 Newton.Json.Net dll v3.5를 참조했습니다. 이 라이브러리를 사용하지 않았기 때문에 참조에서 제거하면 더 이상 컴파일러 오류가 발생하지 않습니다.

문제 해결됨!!!


답변

실제 오류는 오류를 일으키는 2.0 어셈블리에 다음 코드가 포함되어 있다는 사실에서 비롯됩니다.

namespace System.Runtime.CompilerServices
{
    public class ExtensionAttribute : Attribute { }
}

위의 코드를 사용하면 .NET 2.0 어셈블리에서 확장 메서드를 사용할 수 있습니다 ( .NET 2.0에서 확장 메서드 사용? 참조 ). mscorlib.dll (4.0)이 동일한 네임 스페이스에 동일한 클래스를 포함하므로 .NET 4.0을 대상으로하고 2.0 어셈블리 (위 코드 포함)를 참조하는 경우 컴파일러를 혼동합니다.

나는 이것을 고쳤다

  • 4.0을 대상으로하는 특성없이 원래 2.0 어셈블리를 다시 컴파일하여
  • 어셈블리를 제거하여 (분명히)
  • 컴파일하는 대상에 세 번째 확장 속성을 추가하여 (참조 된 정의를 무시하는 것 같습니다)


답변

프로젝트 어딘가에이 코드를 작성하면 문제가 해결 될 수 있습니다. 그것은 나를 위해 작동합니다

namespace System.Runtime.CompilerServices
{
    public class ExtensionAttribute : Attribute { }
}


답변

.NET 4.0 프로젝트에서 참조 된 NLog.dll 2.0도이 문제를 일으킬 수 있습니다.