2009-11-11 2 views
7

솔루션 파일 경로 (.sln 파일)와 빌드 모드 (디버그, 릴리스)를 전달하여 솔루션을 컴파일하려고합니다. devenv.exe 또는 msbuild.exe와 같은 명령 줄 프로세스를 호출하고 싶지 않습니다. 대신 API를 사용하여 컴파일 오류가 발생했는지 확인하고 싶습니다.프로그래밍 방식으로 Visual Studio 솔루션을 만드는 방법은 무엇입니까?

가능합니까? 그 방법을 알고 있다고 생각되면 샘플을 제공해주십시오.

답변

3

컴파일을 시작하려면 프로세스를 시작해야하며 컴파일을 시작하는 프로세스를 생성해야합니다. API로 어려움을 겪는 것보다 훨씬 쉬울 것입니다.

편집 앤드류 (Andrew)는 어떻게 움직일 지에 대한 좋은 조언을하지만 여전히 실수라고 생각합니다.

+0

끝내기 코드로 얼마나 쉽게 스크립트를 작성할 수 있는지 놀랍습니다. (나는 너무 많은 사람들이 얼마나 간단하고 쉬운 배치 파일이 작동 하는지를 기억하지 못한다고 생각한다 ... DOS가 대중적이었던 이후로 몇 년이 지났기 때문에 아마 그들은 모를 것이다.) –

+0

그 소리는 참으로 훌륭하다. API를 사용하는 것이 훨씬 쉽습니다. 나는 올바른 객체가 있으면 오류를 테스트 할 수있는 위치로 돌아 왔지만 쉬운 .net API가 없다는 것은 부끄러운 일이라고 생각합니다. 기타 감사합니다. – clems

+0

itowlson이 지적한 빌드 엔진 API를 놓친 것 같아요. http://msdn.microsoft.com/en-us/library/microsoft.build.buildengine.engine.buildprojectfile.aspx –

2

것은 itowlson은 또한 배치 파일로

// Build a project file 
bool success = engine.BuildProjectFile(@"c:\temp\validate.proj"); 

당신은 스크립트에서 MSBuild를 사용할 수 있습니다 ... MSDN에서 ... Build Engine APIs

을 사용할 수있는 지적. 그리고 ErrorLevel을 0 이외의 값으로 확인하거나 API를 재미있게 사용할 수 있습니다.

C : \ WINDOWS \ Microsoft.NET 프레임 워크 \ \ V2.0.50727 MSBuild.exe를에서

.. MSBuild.exe를

\ /? ...

마이크로 소프트 (R) 엔진 버전 빌드 2.0.50727.4927 [마이크로 소프트 .NET Framework 버전 2.0.50727.4927] 저작권 (C) Microsoft의 예약 2005 모든 권한을 소유합니다.

구문 : MSBuild.exe를 [옵션] [프로젝트 파일]

...

예 : 여기

MSBuild MyApp.sln /t:Rebuild /p:Configuration=Release 
    MSBuild MyApp.csproj /t:Clean /p:Configuration=Debug 
+2

MSBuild 명령 줄을 사용하고 싶지 않으므로 특히 MSBuild API, 특히 http://msdn.microsoft.com/en-us/library/microsoft.build.buildengine을 가리켜 볼 가치가 있습니다. engine.buildprojectfile.aspx. – itowlson

+0

좋은 지적은 ... 아마 그냥 Process.Start()와 exe로 래핑 하겠지만 API의 장점을 볼 수 있습니다. –

1

프로그래밍 C# 컴파일러를 이용하여 논의하는 article이다. 다음은 sln 파일 형식을 설명하는 article입니다. sln 파일은 XML 파일이므로 매우 읽기 쉽습니다.

0

또한 MSBuild API를 사용하는 것이 좋습니다. 그것은 꽤 잘 작동하는 것 같습니다. 그러나 .NET4 및 VS2010에서는 크게 변경되었습니다.