문제

이상한 경고를 받고 있습니다.

사전 정의 된 유형 'system.runtime.compilerservices.extensionAttribute'는 글로벌 별명의 여러 어셈블리에 정의되어 있습니다. 'C : Program Files Reference Assemblies Microsoft Framework V3.5 System.core.dll'의 정의 사용

줄 번호가 없으므로 그것이 무엇인지 알아 내기가 어렵습니다.

컴파일러 오류 코드는입니다 CS1685

도움이 되었습니까?

해결책

이 속성을 구현 한 사람의 DLL (또는 자신의)을 사용하고 있는데 (정확히 같은 이름을 가진) 자체가 .net 3.5 runtimes에서 일부 C# 3.0 기능을 사용하는 수단으로 자체를 사용하고 있습니까? (일반적인 속임수)

이것이 가능한 원인입니다. 올바른 하나 (GAC의 MS 중 하나)를 사용하고 있기 때문에 이것은 문제가되지 않습니다. 그러나 다른 하나를 사냥하고 제거해야합니다.

다른 팁

Shuggycouk의 (올바른) 답변을 확장합니다

진실로 어떤 버전의 속성이 사용되는지는 중요하지 않습니다 (GAC, 3 부 등). 중요한 것은 C#/VB 컴파일러가 올바른 이름으로 일부 속성을 찾을 수 있다는 것입니다. 속성은 코드에서 기능적 목적을 제공하지 않습니다. 컴파일러에게 "이봐, 이것은 확장 방법"이라고 말하는 것이 순전히 존재한다.

이 경고를 안전하게 무시할 수 있습니다.

나는 Shuggycouk에 가장 적합한 행동 과정은 불쾌한 DLL을 제거하는 것입니다. 그러나 그것은 불가능할 수 있습니다.

컴파일러가 불평하는 모호성을 해결하는 또 다른 방법은 참조 된 DLL의 별칭을 변경하는 것입니다. 프로젝트에서 참조 폴더에서 참조 된 DLL을 클릭하면 별명 속성이 표시됩니다. 기본적으로 이것은 "Global"으로 "Global :: somenamespace.sometype"과 같은 작업을 수행 할 수 있습니다. 별명을 다른 것으로 바꿀 수 있습니다.

이로 인해 Microsoft.scripting.core.dll을 참조 해야하는 문제가 해결되었지만 Mscorlib.dll과 충돌하는 일부 유형이 포함되어 있습니다. 나는 별명 속성을 "글로벌"대신 "제 3 자"로 변경하여 경고를 수정했습니다.

나도 같은 문제를 안고있어.

제 경우에는 문제가 어셈블리 모노 .cecil이었습니다.

NUGET으로 로컬 참조에서 NUGET을 추가하면 NHIBERNATE 참조를 추가하면 패키지가 자동 으로이 참조를 추가합니다.

이 참조가 제거되어 프로젝트를 다시 컴파일했습니다.

그것을 제거하고 행복하세요 !!

이 이미지는 Ilspy에서 가져 왔습니다 ( http://i.stack.imgur.com/qyd5o.png )

컴파일러는 어떤 system.runtime.compilerservices.extensionattribute를 모릅니다

따라서 C : Program Files Reference Assemblies Microsoft Framework V3.5 System.core.dll '의 정의를 사용하고 있습니다.

사용중인 .dll은 동일한 확장을 가질 수 있습니다.

우연히 4.5 대신 .NET 3.5로 IIS를 설치 하여이 오류를 트리거했습니다.

수정은 제어판에서 "기능 추가 ..."에 4.5를 다시 추가하는 것이 었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top