2010-12-04 3 views

답변

4

이 문제는 확장 메서드를 내부적으로 사용하려는 모든 .NET 2.0 프로젝트에서 잘 알려진 문제이므로이를 허용하기 위해 자체 내부에 System.Runtime.CompilerServices.ExtensionAttribute을 선언하십시오.

.NET 3.5 이상을 사용하는 경우이 문제를 해결하는 데는 여러 가지 방법이 있습니다. 단, NET_3_5 또는 NET_4_0으로 Mono.Cecil을 컴파일하기 만하면됩니다. .NET 2를 목표로한다면 운 좋게도 컴파일 할 수 있습니다 (일부 컴파일러 내부, 분명히 csc 명령 줄 또는 MSBuild가 아님). 그렇지 않은 경우 해결 방법은 Cecil 자체에서 2.0 Cecil 어셈블리의 해당 특성 (정의 포함)을 모두 제거하는 것입니다.

나는 already done this입니다. 큰 문제는 아닙니다. 그러나 귀하의 이슈가 다른 것으로 느껴 지므로, 사용중인/목표로 삼고있는 Mono 버전과 .NET 버전에 대해 좀 더 자세히 설명해주십시오.

+0

내 프로젝트는 .net 4이고, 일부 확장자를 추가하기 위해 mono.cecil을 .net 4로 변경했습니다. 정의에 추가하려고 시도합니다. – Will

+0

mono.cecil에서이 경고를 주목했습니다. "미리 정의 된 형식 'System.Runtime.CompilerServices.ExtensionAttribute'가 'path'의 정의를 사용하여 전역 별칭의 여러 어셈블리에 정의 됨 \t Mono.Cecil" – Will

+2

이 오류는 .NET 4 용 Mono.Cecil을 빌드하면 사라집니다. 정의 된 NET_4_0 기호 (프로젝트 속성에서 설정할 수 있음). https://github.com/JohannesRudolph/cecil/blob/master/System.Runtime.CompilerServices/ExtensionAttribute.cs를 참조하십시오. –

2

내 프로젝트에서 "Mono.Cecil.dl"및 "Mono.Reflection.dll"에 대한 참조를 제거하여이 오류를 수정했습니다.

이 두 파일은 db4o v8.0 (an object database)과 함께 제공되며 db4o가 Windows 7 x64 + .NET 4.0에서 최적화되지 않은 기본 모드로 작동하는 데 필요하지 않습니다.

0

나는 또한 동일한 문제에 직면 해있다. 오류 System.Runtime.CompilerServices.ExtensionAttribute..ctor

내 프로젝트에 Newtonsoft.Json.Net dll (참조) 사용하고 있습니다. Newtonsoft.Json.Net20.dll 파일에 대한 참조를 제거하고 다시 추가했습니다. 이 후에 내 솔루션이 다시 빌드됩니다.

이상하지만 사실 ... 내 응용 프로그램이 성공적으로 빌드됩니다.

Error when using extension methods in C#

감사합니다,