나는 이것을 위해 명령 줄을 피하고 싶다. I는 다음과 같습니다 코드로 MSBuild에서의 API (Microsoft.Build.Framework
및 Microsoft.Build.BuildEngine
)를 사용하고있다 : 나는 정말 궁금하네요 그것에 대한 답을 찾을 수없는 충분한 문제로 실행했습니다 그러나코드에서 csproj 파일을 빌드하는 효과적인 방법은 무엇입니까?
this.buildEngine = new Engine();
BuildPropertyGroup props = new BuildPropertyGroup();
props.SetProperty("Configuration", "Debug");
this.buildEngine.RegisterLogger(this.logger);
Project proj = new Project(this.buildEngine);
proj.LoadXml(this.projectFileAndPath, ProjectLoadSettings.None);
this.buildEngine.BuildProject(proj, "Build");
내가이 일을 제대로한다면. 첫째, 출력을 찾을 수 없습니다. (dll이 끝날 것이라고 생각한 장소에 bin 디렉토리가 없습니다.) 둘째, VS2008에서 만든 프로젝트를 구축하려고 시도했는데 proj.LoadXml(
라인이 잘못된 xml 인코딩으로 인해 실패합니다. 물론 xml 파일은 VS2008이 빌드 할 수 있기 때문에 유효합니다 (확인).
이 시점에서 필자는 오래된 코드이거나 다른 방법으로 대체 된 방법론을 선택했는지 궁금해하기 시작했습니다. 의견?
궁금한데 왜 코드에서 .csproj 파일을 만들어야합니까? –
여기에 같은 질문이 있습니다. 왜 훌륭한 msbuild exe를 사용하지 않았습니까? 코드에서 트리거 할 수도 있습니다. –
@Andy : 예외 처리가 가장 먼저 떠오른다. 나는이 API가 msbuild가 사용하는 것과 동일한 코드 집합이라고 생각하여 왜 중간 남자를 잘라 내지 않습니까? – jcollum