2009-11-04 8 views
0

우리는 DTE 환경을 사용하여 작성된 Visual Studio 마법사를 사용하여 코드, 템플릿 등을 자동으로 생성합니다. 일부 사용자 지정 데이터베이스 항목을 기반으로합니다. 지금은 몇 가지 대화 상자를 표시하고 정보를 수집 한 다음 EnvDTE 클래스를 사용하여 코드를 생성하고 형식을 지정합니다.명령 줄에서 사용자 지정 Visual Studio 마법사를 호출하는 방법?

사용할 수있는 대화 상자에서 수집 한 정보가 있다고 가정하면 devenv를 호출하고 마법사가 자동으로 코드를 생성하도록 실행하는 방법이 있습니까?

답변

0

DTE2 인터페이스를 사용하는 시각적 스튜디오 자동화가 이에 해당합니다.

Solution2 solution = (Solution2)m_DTEInstance.Solution; 
solution.Create(OutputDirectory, Namespace + ".sln"); 
0

명령 줄에서 Visual Studio를 실행할 수 있습니다. 명령 (devenv /Command ...)을 실행하게 만들 수도 있지만 여전히 전체 Visual Studio를 부트 스트랩하는 것을 의미합니다. 이것이 의도 한 것이라면 일괄 처리 모드로 실행하기에 적합하지 않습니다.

대신 코드 생성을 위해 CodeDom을 사용할 수 있습니다. EnvDTE 또는 Visual Studio의 다른 프로그램에서 코드를 생성하지 않습니다. 내 코드 생성기에서 Visual Studio Automation을 사용하기 시작했으나 배치 빌드의 경우 CodeDom을 대신 사용하여 코드를 다시 실행해야했습니다.

+0

내가/명령 옵션을 조사해야합니다 : 예를 들어, 나는 그럼 당신은 새로운 솔루션을 만드는 등의 일을 할 수

Type t = Type.GetTypeFromProgID("VisualStudio.DTE.9.0", true); object obj = System.Activator.CreateInstance(t, true); m_DTEInstance = obj as DTE2; 

과 비주얼 스튜디오의 새로운 인스턴스를 생성. 전체 Visual Studio를 부트 스트랩하는 것은 괜찮습니다. 무엇보다 프로세스를 자동화하는 것이 더 중요합니다. 이상적으로는 빌드 자체의 일부가되기를 바랄 것입니다 (빌드가 생성되면 빌드됩니다). CodeDom을 위해 다시 작성하는 데는 신경 쓰지 않지만이 전체 프로젝트에 2 일만 할당하고 코드 생성을 다시 작성하는 데는 일주일이 걸릴 것입니다. – esac

+0

업데이트 : 모든 명령 행 옵션을 살펴보고 마법사를 실행하는 데 아무 것도 볼 수 없으므로 전체 마법사를 EnvDTE와 작동하지 않는 명령 줄 버전으로 이동해야합니다. – esac

+0

자동화와 함께 작업하는 패키지, CodeGeneration, 편집자 등 VS 통합을 다루는 모든 경험을 통해 여전히 저에게 가슴 앓이를줍니다. 불안정하고 문서의 나머지 부분보다 훨씬 심하다. CodeDom에서 IMHO를 다시 작성하는 것은 염두에 둔 경로보다 더 예측 가능합니다. 물론 코드 생성 코드의 양에 따라 달라집니다. – mfeingold

관련 문제