2010-08-20 3 views
1

최근에 나는 MSTest로 작업 해 왔으며 testframework가 컴파일시에 접근 자 클래스를 동적으로 생성한다는 사실을 발견했습니다. 어떻게이 일을 할 수 있습니까?컴파일시 추가 형식 정의 만들기

VS2010 C# 프로젝트에 xml 파일이 있습니다. 이 XML 파일에서 특정 데이터 열거 형을 만들고 싶습니다. 이 작업을 수행 할 수 있습니까? 그렇다면 어떻게?

답변

1

내가 T4 자신을 템플릿 권하고 싶습니다를 사용하여 클래스를 만드는 방법을 보여줍니다. 매우 사용하기 쉽고 빌드하는 동안 코드를 생성 할 수 있도록 특별히 설계되었습니다. http://msdn.microsoft.com/en-us/library/bb126445.aspx

1

메서드 A) xml 파일을 읽고 파싱 한 다음 C# 코드를 생성하고 C# 코드를 임시 파일에 기록한 다음 해당 코드를 컴파일합니다. 임시 파일을 삭제하십시오.

방법 B) xml 파일을 읽고 구문 분석합니다. System.Reflection.Emit 네임 스페이스의 메서드 또는 System.CodeDom 네임 스페이스의 메서드를 사용하여 직접 IL 코드를 생성합니다.

1

MSTest는 여러 가지 방법으로이를 수행합니다. 한마디로 그들은 본질적으로 그들은 빌드들이 자신의 파일을 제거 완료되면 프로젝트에

  • 숨겨진 파일에 자신의 acessor 년대를 생성 빌드의 시작에서 빌드 시스템
  • 에 다음 IIRC에게

    1. 훅을

    동일한 프로세스를 통해 비슷한 효과를 얻을 수 있습니다. 그러나 빌드 시스템에 연결하는 것은 약간 복잡합니다. 훨씬 간단한 방법은 사용자 정의 도구/코드 생성기와 후크를 만드는 것입니다. 이를 통해 빌드시 파일을 처리하고 해당 코드 파일을 작성하여 빌드에 포함시킬 수 있습니다.

    웹에서 달성 방법에 대한 몇 가지 예가 있습니다. 여기에 몇 가지를

  • 0

    을하는 System.CodeDom Namespace 당신이 가진 하나 개의 옵션입니다.

    C# 코드를 사용하여 자동으로 클래스를 생성하고 컴파일 할 수도 있습니다.

    프로젝트 빌드 중에이 코드를 포스트 빌드로 부를 수 있습니다. 이 example

    는이 네임 스페이스