2016-09-16 2 views
1

Visual Studio 2015에서 컴파일하려고하면 다음 오류 추적이 나타납니다. 다른 사람이 이것을 경험 했습니까?PostSharp 4.3.20로 컴파일 할 때 오류가 발생했습니다.

Error  Unhandled exception (4.3.20.0, postsharp-net40-x86-srv.exe, CLR 4.0.30319.394271, Release): System.NullReferenceException: Object reference not set to an instance of an object. 
    at PostSharp.Sdk.CodeModel.GenericMap.GetGenericParameter(GenericParameterKind kind, Int32 ordinal) 
    at PostSharp.Sdk.CodeModel.TypeSignatures.GenericParameterTypeSignature.MapGenericArguments(GenericMap genericMap) 
    at PostSharp.Sdk.CodeModel.MethodDefDeclaration.WriteReflectionName(StringBuilder stringBuilder, ReflectionNameOptions options, NameMapper mapper) 
    at PostSharp.Sdk.CodeModel.WriteReflectionNameExtensions.GetDisplayName(IWriteReflectionName declaration) 
    at PostSharp.Sdk.Extensibility.Licensing.LocalLicenseManager.^BLnBYDPkLE/l(MetadataDeclaration _0, TypeDefDeclaration _1, List`1 _2, List`1 _3, ^hjDNKkMra\+ry _4) 
    at PostSharp.Sdk.AspectWeaver.AspectWeaver.^Rb+2eJKK(MetadataDeclaration _0) 
    at PostSharp.Sdk.AspectWeaver.AspectWeaverInstance.ProvideAdviceTransformations(AspectWeaverTransformationAdder adder) 
    at PostSharp.Sdk.AspectWeaver.AspectWeaverTask.^5t5Tu4zL(AspectWeaverInstance _0) 
    at PostSharp.Sdk.AspectWeaver.AspectWeaverTask.^vPCloP06(IMetadataDeclaration _0, AspectWeaverInstance _1) 
    at PostSharp.Sdk.AspectInfrastructure.StructuredDeclarationDictionary`1.^lNgKC+Z4(IMetadataDeclaration _0, Func`3 _1) 
    at PostSharp.Sdk.AspectInfrastructure.StructuredDeclarationDictionary`1.^RdBVqi\.M.^8/pSq47Q(IMetadataDeclaration _0) 
    at PostSharp.Sdk.AspectInfrastructure.StructuredDeclarationDictionary`1.^d+wOzSPF(IMetadataDeclaration _0, Func`2 _1) 
    at PostSharp.Sdk.AspectInfrastructure.StructuredDeclarationDictionary`1.^+g+TCqVg(TypeDefDeclaration _0, Func`2 _1, Set`1 _2) 
    at PostSharp.Sdk.AspectInfrastructure.StructuredDeclarationDictionary`1.^fJqG(Func`2 _0) 
    at PostSharp.Sdk.AspectInfrastructure.StructuredDeclarationDictionary`1.^fJqG(Func`3 _0) 
    at PostSharp.Sdk.AspectWeaver.AspectWeaverTask.Execute() 
    at PostSharp.Sdk.Extensibility.Project.ExecutePhase(String phase) 
    at PostSharp.Sdk.Extensibility.Project.Execute() 
    at PostSharp.Hosting.PostSharpObject.ExecuteProjects() 
    at PostSharp.Hosting.PostSharpObject.InvokeProject(ProjectInvocation projectInvocation). 

편집 :이에 대한 샘플 프로젝트를 생성하는 시도에서 나는 원인을 할 수 있었다. public static implicit operator T(Editable<T> item)이있는 유형에 OnMethodBoundary (내부 로깅 중 하나) 요소가 적용되었습니다. PostSharp에이 방법을 배제하라고 말하면 문제가 사라졌습니다.

따라서 재현하려면 Express 라이센스를 사용하면서 일반 암시 적 연산자에 OnMethodBoundary를 적용하십시오.

[ExceptionLoggerAspect] 
class Challenged<T> 
{ 
    public T Value { get; set; } 

    public static implicit operator T(Challenged<T> item) 
    { 
     return item.Value; 
    } 
} 
+0

문제를 재현 한 프로젝트를 공유해 주시겠습니까? 또는 같은 방식으로 동작하는 샘플 프로젝트입니까? –

+0

@ AntonínProcházka 나는 간단한 재현 방법을 추가했다. 이 문제를 해결하기 위해이 문제를 해결할 수 있습니다. –

답변

1

작업 주위에 나는 우리 OnMethodBoundaryAspect가 멀티 캐스트되는 한 일반적으로 입력 암시 적 연산자에 AttributeExclude = true를 사용하는 것이었다 사용하여 끝났다.

[ErrorLoggingAspect(AttributeExclude = true)] 
public static implicit operator T(Editable<T> item) 
{ 
    ... 
} 
+1

이 문제는 PostSharp 4.3.22에서 수정되었습니다. – AlexD

관련 문제