1

다른 프로젝트와 마찬가지로 C#/C++/VB.Net과 함께 Visual Studio 2010 솔루션이 있습니다. MsBuild 기반이 아닙니다.VS2010의 디버그 및 릴리스 빌드가 동일한 구성을 사용한다는 것을 프로그래밍 방식으로 확인하는 방법은 무엇입니까?

내 동료는 내가 주로 Debug 빌드 작업 및 Release 거의 사용되지 않지만 실제로 사용 (릴리스 전용 버그가 있다고, 그 팝업 때때로을한다.)

야간 빌드는 자체적 인 별도의 프로세스를 따르고 개발자가 사용할 릴리스 빌드와 다소 비슷하지만 무언가를 만듭니다. 아무리해도 ... 너무 자세히 설명하지 않고

DebugRelease 구성의 대칭을 확인하는 단위 테스트를 추가하고 싶습니다. 여기서는 해당 솔루션 플랫폼 (여기서는 Win32)입니다. (즉 우리가 현재 테스트에 사용할 것입니다 때문에)

은 내가 C# 솔루션 또는 Python 솔루션을 선호하지만, PerlPowerShell 또한 너무 많은 노력없이 이식 할 수 있습니다.

"해결책"으로 말하면 완전한 컴파일 유닛 테스트가 필요하다는 것을 의미하지는 않습니다 (완전한 답변은 시간이 지남에 따라 더 많은 표를 얻는 경향이 있지만). 내가 시작하게 만드는 관련 코드 덩어리가 충분히 좋을 것이다.

가장 큰 어려움은 MsBuild 기반이 아닌 Visual Studio 솔루션 파일을 구문 분석하는 것입니다. (그렇기 때문에 순수 Xml이 아니라 재미있는 MSFT ASCII 형식이라는 것을 알았습니다.)

궁금한 점이 있으면 알려주세요. 다시 한 번, Debug+Win32Release+Win32 사이의 모든 차이점을 찾으려고합니다. Win32 것이 표준인지 내부적인지는 확실하지 않습니다.

감사합니다.

+0

일부 독점 형식입니다 : 당신이 어셈블리 인스턴스가 있다고 가정하면, 이것은 당신이 할 것 방법이다. –

+0

흠 ... 이러한 형식이 해킹 된 적이 있으니 확신합니다. –

답변

1

디버그 모드에서 어셈블리가 컴파일되었는지 확인하려면 어셈블리에서 Debuggable 특성을 가져옵니다. . (가) * PROJ 파일이 올바른 XML로 보면 최소한의 .sln 파일을 하다니

 
// The assembly is in a variable named assembly. 
object[] attributes = assembly.GetCustomAttributes(typeof(DebuggableAttr ibute), true); 

// If the array is null, or has length of zero, then it is not debuggable. 
if (!(attributes == null || attributes.length == 0)) 
{ 
    // It is debuggable, figure out the level. 
    DebuggableAttribute debug = (DebuggableAttribute) attributes[0]; 

    // At this point, you can access the DebuggingFlags property to 
    // determine the level of debugging. 
} 
+0

고마워,하지만 .sln 파일에 대한 작업에 관심이있어, 컴파일 된 dll 결과가 아닙니다. 나는 당신의 대답을 오해하지 않기를 바랍니다. –

+0

나는 당신의 질문을 오해 한 것입니다. 나는 내 머리 속에서 코드를 심문하는 것이 유일한 방법이라고 생각했다. –