불편한 진실, 한국 마이크로소프트가 주최/후원하는 세미나에 갈 때 주의사항

예전에는 한국 마이크로소프트에서 직접 주최하거나 후원하는 세미나가 매우 많았다. 아마도 MS 기반의 플랫폼 개발자들에게 가장 생기가 넘치던 때가 아닌가 싶다.

필자는 오랫동안 한국 마이크로소프트의 관계자에게 압력을 받아왔다. 사용자 입장에서의 피드백이나 단점을 지적하게 되면 개인 SNS와 블로그, 커뮤니티를 가리지 않고 감시하고, 필자가 올린 글을 내리라고 한다. 그렇게 필자가 압력을 받아 내리게 된 글이 수 건이나 된다. 마이크로소프트는 소프트웨어 개발사로 매우 존경한다. 하지만, 한국 마이크로소프트는 철저한 영업 조직인 만큼 물건 팔 때 방해가 되는 것은 도를 넘어서라도 한낱 개인에게 까지 압력을 행사하는 머 그런 곳인가 보다.

현재는 Microsoft MVP가 아니므로 직접적인 압력 행사는 없지만 (앞으로는 간접적으로도 아니길 바란다.), 필자가 한국 마이크로소프트에 완전히 등을 돌린 것이 아직까지 신경에 민감한가보다. 필요할 땐 페이스북에서 예고 없이 그룹에 초대하더니 예고 없이 강탈 당하고, 페이스북에 신고를 한 모양이다. 이렇게 빨리 필자에게 피드백을 주는 것을 보니 꽤나 신경질이 났던 모양이다. 더불어 필자에게 휘둘려 주고 귀기울여 준다는 사실에 오히려 고맙게 느껴진다.

결국 필자가 그 잘난 MVP를 그만둔 사연도 한국 마이크로소프트의 관계자들이 개인 사찰의 정도가 지나치다고 판단에서 부터였으니… 회계분기가 끝나면 필자가 나름 매력에 빠진 새로운 플랫폼에 매진할 것이다.

각설하고, 본론만 간결하고 굵게 얘기하고자 한다.

아래에 언급하는 내용은 필자가 한국 마이크로소프트와 함께 세미나를 진행하면서 알게 된 사실이다. 필자의 발표가 끝나고 약간 짬을 내어 세미나 내용에 대해 질문을 받았는데, 질문자는 어쩌다가 회사에서 사용하는 개발툴 버전과 관련된 질문을 필자에게 했다. 허나 안타깝게도 이 사람은 한국 마이크로소프트의 희생양이 될 것이다. 모든 행사가 끝나고 관계자들과 담배를 피고 있었는데, 한국 마이크로소프트 관계자는 질문자의 회사가 라이센스를 구매하지 않은 사실을 알게되었고, 그 사실에 매우 기뻐하며 “오~ 좋아~”를 연발하였다.

그 이후 실제 라이센스를 매기러 갔는지는 모르겠으나, 경솔하게 필자 앞에서 그들의 영업 비밀을 누설을 해버렸다. 물론, 결과적으로 매우 합법적이겠지만, 파트너쉽(?)에 있어 아작 아작 금이 가는 것은 어쩔 수 없을 것이다. 내가 알고 있는 기업 몇 곳이 .NET 으로 쫙 깔인 회사의 플랫폼 기반을 돌연 Java로 바꾸는데 큰 기여를 하지 않았나 하는 생각이 든다.

뭐 아무튼 위의 사실을 나와 내 지인이 함께 있던 자리여서 왠지 더 씁쓸한 미소를 지었다. 쉽게 말해, 증인이 있다는거다. (당연히 양심적인 사람들이 더 많지만, 아닌 사람 얼굴이 그 회사를 대표하는 이미지 메이커 아닌가)

이미지 참조 Windows 8 APP STAR 앱 비즈니스 성공 전략 세미나 참여 후기


1. 한국 마이크로소프트 주최/후원 세미나에 갈 때,

대부분 무료 세미나다. 하지만 무료라고 기뻐하지 마라. 당신에게 세미나 피드백과 설문조사라는 명목으로 종이 한장을 내밀 것이다.

2. 절대 설문 조사에 응하지 말 것,

항상 세미나 후에 설문 조사를 위해 종이를 나누어 준다. 이것을 작성하는 순간 당신은 중요한 회사 보안 사항을 누설하는 것이다. 여기에 이름/회사/연락처/이메일/사용하는 개발툴 등을 기재하는 란이 있다.

3. 절대 회사명을 밝히지 말 것,

보통 각 제품을 담당하는 사람이 있는데, 이 사람은 어느 회사에 몇 카피(Copy)/ 라이센스가 몇 개 있는지 머릿속에 꽤차고 있다.

4. 절대 사용하는 개발 툴, 제품을 쓰지 말 것,

설문 조사에 응하는 순간 당신의 회사에 몇 카피를 사용하고 있는지 알고 있다. 그러므로 당신의 회사가 보유한 라이센스 유무 및 개수가 바로 파악이 된다.

5. 한국 마이크로소프트가 당신 회사를 방문할 것이다.

당신이 제공한 정보로 불법 사용 여부가 여실히 드러나게 된다면, 회계 분기가 되면 한국 마이크로소프트는 어김 없이 설문 조사 데이터를 토대로 여러분을 찾아갈 것이다.

6. 절대 이름을 남기지 말 것,

아무튼 남기지 마라.

7. 절대 이메일을 남기지 말 것,

xxx@powerumc.kr 과 같이 회사의 도메인이 들어갔다면 절대 이메일 정보를 쓰지 마라. 이왕 개인 이메일도 쓰지 마라.

8. 단, 모든 것이 ‘좋다’, ‘매우 만족’ 에 동그라미 칠 것,

열심히 발표한 스피커는 아무 상관이 없지 않은가. 특히 초짜 스피커는 아무런 보상 없이(땡전 한푼 안받고) 오로지 열정 하나로 여러분들 앞에 서는 것이다. 그러므로 혹여 세미나가 만족스럽지 못하더라도 꿈과 희망을 주기 위해 좋은 평가를 하는 것이 어떨까.

Posted by 땡초 POWERUMC

댓글을 달아 주세요

  1. 2013.07.04 12:16 Address Modify/Delete Reply

    그런 일도 있었군요.
    예전에 잠깐 발 담근 프로젝트에서는 영업 온 한국 MS직원이 라이센스 구매의사가 있는 기업을 신고한 적도 있다더군요. 영업상담하면 무슨 라이센스가 없는지 다 알게되고 개발과정이 어느 정도 진척됐는지만 알면 몇몇 제품을 그동안 그냥 쓰고 있던건지 그림이 나오니까요...

  2. ㄴㄴ 2013.07.05 00:55 Address Modify/Delete Reply

    ms 세미나 여러차례 가본적이 있었지만, 항상 기대이하여서 그 이후론 가지도 않게 되더군요.
    거의 마케팅용정도.. ms제품군 홍보가 한계였었음.

  3. 강성호 2016.02.20 18:23 Address Modify/Delete Reply

    불법 소프트웨어 사용이 올바른 것인가요??...글은 흥미있게 보고 있으나, 이번글은 이해가 안됩니다...

    • 땡초 2016.02.21 11:39 Address Modify/Delete

      제 의도는 방법이 잘못되었다는 것을 얘기하는 것입니다.
      물론 불법을 장려하는 것도 아니고요.

지난 아티클에서 Visual Studio 2008 과 Visual Studio 2010 을 동일한 소스 코드와 프로젝트로 개발하기 위한 환경을 구성하는 방법을 알아보았습니다.

문제 원인

하지만 지난 시간에 언급한 듯이 테스트 프로젝트가 포함된 경우는 VS2008 과 VS2010 을 동시에 사용할 수 없는 문제가 발생합니다. 그 이유는 Microsoft.VisualStudio.Quality 프레임워크가 개선이 되고, Microsoft.VisualStudio.TestTools 프레임워크가 도입되면서 기존의 테스트 프레임워크와 비호환적인 부분이 존재하게 됩니다.

아래와 같이 VS2008 에서 작업한 테스트 프로젝트가 있을 경우,

지난 아티클의 방법으로 프로젝트를 변환하게 되면 아래의 오류가 발생합니다.

기존 프로젝트는 기존의 .NET Framework 버전을 그대로 사용할 수 있지만, 테스트 프로젝트는 반드시 .NET Framework 4.0 으로만 사용할 수 있습니다.

만약 하위 프레임워크 버전인 .NET Framework 3.5 로 변경하고자 할 경우 아래와 같은 오류 메시지가 나타나고, 다시 .NET Framework 4.0 버전으로 변경이 됩니다.

일부 이미 완성된 테스트 프로젝트인 경우 이것보다 더 다양한 오류 메시지를 볼 수 있습니다.^^;

어쨌든, Microsoft.VisualStudio.QualiltyTools 프레임워크가 .NET Framework 4.0 버전으로 고정되어 자칫 테스트 프로젝트가 굉장히 큰 우범을 저지를 수 있는 문제가 될 수 있습니다.

반대로 Visual Studio 2010 에서 만든 테스트 프로젝트는 .NET Framework 4.0 이 기본이고 Microsoft.VisualStudio.QualityTools 프레임워크와 Microsoft.VisualStudio.TestTools 프레임워크가 기본 참조(RTM 에서는 제외 됨)이며, 이 프레임워크의 버전도 4.0.xxxxx 버전이라 하위 버전과 호환되지 않습니다.

VS2010 이든 VS2008 이든 테스트 프로젝트가 한번 VS2010 으로 업그레이드 되었다면, VS2008 에서 테스트 프로젝트를 사용하기 위해서는 다운그레이드는 그리 쉽지 만을 않습니다. 왜냐하면 VS2008 에서 테스트 프로젝트를 로드하면 프로젝트의 참조가 깨져있습니다.

그 이유는 .csproj 파일을 열어보면 답이 나오는데요. 아예 Microsoft.VisualStudio.QualityTools 프레임워크의 버전 번호를 명시하여 해당 VS2008 에서는 어셈블리 리디렉션(Assembly Redirection) 을 시키기가 좀 애매해 집니다.

   

문제 해결 기본 지식

이 문제를 해결하기 위해서는 테스트 프로젝트간의 비 호환적인 테스트 프레임워크로 인한 문제이므로, 문제를 해결하기 위한 접근 측면에 제한을 둘 수 밖에 없습니다. Visual Studio 2010 에서는 Coded UI, Test Impact 등 새로운 기능이 추가되었고, 기존 테스트 또한 비주얼한 부분이 개선이 되면서 강제적으로 테스트 프레임워크의 버전을 .NET Framework 4 로 고정을 시키는 것 같습니다.

이 문제는 MSBuild 를 통해 해결하기 위한 기본적인 지식을 알려드립니다. 여러분이 알다시피 MSBuild 는 Microsoft 의 통합 빌드 솔루션입니다. 예전에는 "빌드"라는 말 대신 "컴파일"이라는 단어를 사용했었죠. 컴파일이란 소스 코드를 목적 파일 또는 실행 파일로 변환하는 과정을 "컴파일"이라고 합니다.

컴파일과 빌드를 비교하는 아주 간단한 그림 입니다.
컴파일은 목적은 소스 코드를 목적 파일로 변환하여 실행 파일 또는 라이브러리로 만들기 위한 목적입니다.

빌드는 컴파일의 일련의 과정을 플로우(Flow) 로 처리하여 컴파일 중에 더 많은 작업을 하기 위한 목적입니다.
가장 대표적인 빌드 솔루션이 MSBuild 이며, 이 외에 Ant 또는 NAnt 등이 바로 이러한 솔루션입니다. 그리고 Team Foundation Server 의 팀 빌드도 바로 MSBuild 에 기반하고 있다는 것입니다.

필자 또한 MSBuild 를 접하면서 나의 지식의 끝을 무한하게 확장해 주었던 것이 MSBuild 입니다. MSBuild 는 정적인 컴파일 방식에서 동적인 방식의 빌드로 거듭나면서 굉장히 많은 가능성을 보여주는 부분이기도 합니다. Microsoft 의 MSBuild 의 대략적인 구조는 아래와 같습니다.

기본적으로 MSBuild 는 Task 의 집합이라고 해도 과언이 아닙니다. 그리고 이 Task 중에 빌드와 연관된 Task 도 있습니다. 이 Task 를 .NET Framework 버전에 따라 Project References(프로젝트 참조)를 변형시키는 방법입니다.

 

해결 방법

이 테스트 프로젝트를 VS2008, VS2010 양 쪽에서 사용하도록 하기 위해서는 이 어셈블리 참조를 동적으로 변화시킬 필요가 있습니다. 이 방법도 MSBuild 의 Choose 라는 조건문으로 제어를 분기할 수 있는 방법입니다.

1. 먼저 솔루션 탐색기에서 열려 있는 프로젝트를 언로드 한 후, 편집을 클릭합니다.

2. 그럼 아래와 같이 참조와 관련되어 있는 부분이 ItemGroup 요소에 있는 것을 확인할 수 있습니다.

3. 이 ItemGroup 에서 VS2008, VS2010 에서 공통적인 참조 어셈블리를 별도의 ItemGroup 으로 분리합니다. 그럼 아래와 같은 형태가 되겠지요?

4. 테스트와 관련된 ItemGroup 에 Choose 조건 분기 요소를 사용하여 조금 변형해 봅시다. .NET Framework 의 버전 별로 말이죠.

위의 $(MSBuildBinPath) 는 실제로 빌드가 수행할 때의 MSBuild 의 경로를 나타냅니다. 하지만 여기에는 한 가지 함정이 있습니다. Visual Studio 2008 에서는 <Message Text="$(MSBuildBinPath)" /> 가 아래와 같이 C:\Windows\Microsoft.NET\Framework\v2.0.50727 로 나타납니다. 하지만 내부적으로 이 MSBuild 는 v3.5 경로의 MSBuild.exe 를 실행하게 됩니다. 자세한 이유와 내막은 Microsoft.Common.targets 파일을 뒤져보시면 아실거라고 생각합니다.

그리고 Choose 조건 분기 요소는 if ~ else 와 같은 구문입니다. ItemGroup 요소는 하나의 항목을 담는 필드라고 보시면 되고, PropertyGroup 은 한 Property 에 여러 항목을 담는 속성이라고 보시면 됩니다. 이 부분은 MSBuild 를 공부해 보시면 어렵지 않는 기본적인 부분이니 자세한 설명은 여기에서 하지 않겠습니다.

5. 모두 완료 되었습니다. 각각의 VS2008, VS2010 에서 테스트 프로젝트를 모두 사용할 수 있게 되었습니다.

만약 Coded UI 와 같은 VS2010 의 새로운 기능을 사용할 경우 아래와 같이 추가적인 어셈블리를 참조하게 됩니다.

이 경우도 위의 4번과 같이 ItemGroup 의 VS2010 용 어셈블리를 아래와 같이 넣어버리면 됩니다.

그럼 VS2008 인지 VS2010 인지에 따라서 참조 어셈블리가 완벽하게 분리가 됩니다.

하지만 VS2008 에서 빌드를 할 경우 아래와 같이 오류가 발생하게 됩니다. 당연히 VS2008 에서는 Coded UI 등에서 필요한 Microsoft.VisualStudio.TestTools 프레임워크가 존재하지 않고, 이 프레임워크를 재사용하기 힘들기 때문입니다.

하지만 이 문제로 해결해 볼까요? 위에서 Property 를 재정의한 구문이 생각나실 겁니다. 전처리 지시문의 상수 값으로 사용되는 <DefineConstants> 에 NET4.0 빌드인지, NET3.5 빌드인지 알 수 있도록 상수 값을 선언하였습니다.

이 상수 값을 이용하여 CodedUI 등 VS2010 에서 새로 추가된 부분에, #if ~ #endif 지시문을 사용하여 감싸 주시면 됩니다.

   

이제 Visual Studio 2008 이든 Visual Studio 2010 이든 테스트 프로젝트를 양 쪽 어떤 도구를 사용하든 테스트가 가능하도록 구성하는 방법을 완료하였습니다.

Posted by 땡초 POWERUMC

댓글을 달아 주세요

  1. file recovery software 2010.07.06 14:15 Address Modify/Delete Reply

    이건 정말 좋은하고 유용한 정보를 비주얼 스튜디오 2008비주얼 스튜디오 2010에 대한 기사입니다

  2. 박진혁 2010.10.19 14:30 Address Modify/Delete Reply

    우와..고민하고 있던것을..감사합니다!!^^

6월 1일 REMIX10 행사를 기점으로 Visual Studio 2010 한글판이 대중에 공개가 되었습니다. Visual Studio 2010 의 영문 버전은 그 이전에 출시가 되었지만 한글판이 출시된 이후에 더 많은 관심을 받게 되었습니다.

Visual Studio 2010 으로 개발 환경을 업그레이드를 진행하는 곳이 특히 해외에서 많습니다. 제가 그걸 어떻게 다 아냐구요? 항상 트위터 검색을 통해 해외에서 Visual Studio 2010 를 어떻게 사용하고 있는지 매일 매일 관심 있게 보고 있답니다. ^^

어쨌든 Visual Studio 2008 을 쓰고 있지만, Microsoft MVP 이거나 회사에서 MSDN Subscription 라이선스가 있다면 Visual Studio 2008, Visual Studio 2010 개발 도구가 혼합해서 사용될 경우가 있습니다. 이런 경우 두 개발 도구에서 쌍방 개발 가능하게 구성을 할 수 있습니다.

이 방법은 제니퍼소프트의 정성태 과장님의 블로그에서 예전에 소개했던 VS2005, VS2008 혼합해서 사용하는 방법과 동일합니다.

1. 간단한 예제로 Console Application 을 Visual Studio 2008 에서 생성했습니다.

   

2. 기존의 솔루션 파일의 복사본을 하나 만듭니다.

   

3. 솔루션 파일을 노트패드로 ConsoleApplication - VS2010.sln 파일을 열어 다음의 항목을 수정합니다.

   

4. 프로젝트 파일을 열어 ToolsVersion 의 '3.5' 를 '4.0' 으로 수정합니다. 'ConsoleApplication1.csproj'

  

만약 다수의 프로젝트일 경우, 위의 3번에서 수정한 솔루션 파일을 열면 프로젝트를 변환하는 마법사로 진행하면 쉽게 변경이 됩니다.

   

5. 모두 완료 되었습니다. Visual Studio 2010 와 Visual Studio 2008 에서 각각의 솔루션 파일로 동시에 작업을 할 수 있습니다.

   

위의 방법을 이용하여 Visual Studio 2008 과 Visual Studio 2010 에도 모두 개발이 가능합니다. 하지만 만약 테스트 프로젝트가 포함이 되어 있다면 두 개발 도구에서 사용할 수 없습니다. 왜냐하면 .NET Framework 4.0 에서는 테스트와 관련된 Microsoft.VisualStudio.Quality 프레임워크가 개선되고, Microsoft.VisualStudio.TestTools 프레임워크가 추가되면서 이전 Visual Studio 2008 과 프로젝트가 호환이 되지 않습니다.    

하지만 불가능할 것 같은 테스트 프로젝트도 Visual Studio 2008과 Visual Studio 2010에서 동시에 사용할 수 있는 방법이 있습니다. 이것은 다음에 알아보도록 하겠습니다.

Posted by 땡초 POWERUMC

댓글을 달아 주세요

  1. 2013.05.12 17:35 Address Modify/Delete Reply

    비밀댓글입니다