2012-12-12 10 views
0

를 사용하여 나는 Fxcopcmd.exe가 Process.Start를을 사용하여 실행하고 나는 513 "ExitCode를" (오류 코드)를 얻을의 FxCop 10.0(513) 오류 코드 (종료 코드)의 FxCop은 C#을

를 VS2010, 윈도우 7 비트가 값. 아래의 기준에

토드 왕은 말한다 :

이 경우

(513)의 종료 코드의 FxCop은 분석 오류 (0x01로)와 어셈블리 참조 오류가 있었다 의미 (을 0x200)

http://social.msdn.microsoft.com/Forums/en-US/vstscode/thread/1191af28-d262-4e4f-95d9-73b682c2044c/

[Flags] 
    public enum FxCopErrorCodes 
    { 
     NoErrors = 0x0, 
     AnalysisError = 0x1, // -fatalerror 
     RuleExceptions = 0x2, 
     ProjectLoadError = 0x4, 
     AssemblyLoadError = 0x8, 
     RuleLibraryLoadError = 0x10, 
     ImportReportLoadError = 0x20, 
     OutputError = 0x40, 
     CommandlineSwitchError = 0x80, 
     InitializationError = 0x100, 
     AssemblyReferencesError = 0x200, 
     BuildBreakingMessage = 0x400, 
     UnknownError = 0x1000000, 
    } 
012 같은 경우

나는 생각한다 3,516,

513 정수 값은 0x201입니다 (보기 int to hex stringEnum.Parse fails to cast string)입니다

어떻게 오류 (분석 오류 (0x01로)와 어셈블리 참조 오류 (을 0x200)) 프로그래밍 단지가 ExitCode를 사용하여 (513, 0x201입니다) 값을 알 수 있습니까? FxCopCmd 및 코드 분석에 대한 오류 코드에 대한

더 :

+0

http://stackoverflow.com/a/5655038/206730 – Kiquenet

답변

0
당신은 AND 비트 연산 사용하여 열거의 특정 값을 테스트 할 수 있습니다

:

FxCopErrorCodes code = (FxCopErrorCodes)0x201; 
if ((code & FxCopErrorCodes.InitializationError) == FxCopErrorCodes.InitializationError) 
{ 
    Console.WriteLine("InitializationError"); 
} 

전체 목록을 얻을 수 있습니다.

private static IEnumerable<FxCopErrorCodes> GetMatchingValues(FxCopErrorCodes enumValue) 
{ 
    // Special case for 0, as it always match using the bitwise AND operation 
    if (enumValue == 0) 
    { 
     yield return FxCopErrorCodes.NoErrors; 
    } 

    // Gets list of possible values for the enum 
    var values = Enum.GetValues(typeof(FxCopErrorCodes)).Cast<FxCopErrorCodes>(); 

    // Iterates over values and return those that match 
    foreach (var value in values) 
    { 
     if (value > 0 && (enumValue & value) == value) 
     { 
      yield return value; 
     } 
    } 
} 
+1

@Kiquenet 어쩌면 유용한 그것은 위의 3.5에서 작동합니다 같은 것을 사용하여 값의. 'using System.Linq; '를 추가해야합니다. http://msdn.microsoft.com/en-us/library/bb341406(v=vs.90).aspx를 참조하십시오. – ken2k