2011-09-28 5 views
0

기존 msbuild 파일 (웹 응용 프로그램 .csproj 파일)을 확장하여 msbuild 파일에 몇 가지 추가 대상/작업을 지정하려고합니다. 이 "확장 된 ms 빌드 파일"에 구성 관련 작업을 넣고 빌드 서버 (TeamCity)에서이 파일을 사용하는 것이 아이디어입니다.다른 msbuild 파일에서 msbuild 파일을 가져올 때 작업 디렉토리 문제

<?xml version="1.0" encoding="utf-8" ?> 
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build"> 
    <Import Project="../My.Web.csproj" /> 
    ...more stuff... 
</Project> 

다음 같은 것을 사용하여이 파일을 빌드 :

c:\myweb\msbuild.exe msbuildscripts/extended.msbuild.file.xml 
내가 처음에 그것을 해결하기 위해 시도하는 방법은 내 웹 프로젝트에 폴더 "msbuildscripts"를 추가하고 확장 MS가 파일을 빌드 넣어했다

원본 ms 빌드 파일을 가져올 때 csproj 파일이 "잘못된"폴더 (msbuildscripts)에서 "실행"되고 csproj-build-file이 참조 된 폴더/항목.

특정 작업 디렉터리를 사용하도록 msbuild.exe에 알리는 방법이 있습니까? 실행 태스크를 사용하여이 문제를 해결하는 것이 가능하다는 것을 알고 있지만 좋은 해결책이 아닌 것 같습니다. 이 같은

답변

3

사용은 MSBuild 작업 :

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="MyBuild"> 

<ItemGroup> 
<ProjectToBuild Include="../My.Web.csproj" /> 
</ItemGroup> 

<Target Name="MyBuild"> 
<MSBuild Targets="Build" Projects="@(ProjectToBuild)"></MSBuild> 
</Target> 
</Project> 
+0

작품 좋은, 그러나 나는 그 요소는 스키마에 있기 때문에 두 가지 옵션이 있지만 작업처럼 보인다, 대신 "ProjectToBuild"의 "ProjectReference"를 사용했다. –

+0

xml 태그에 적합한 식별자는 여기에서 완벽하게 유효하며 스키마에없는 경우 중요하지 않습니다. 독점적 인 csproj 파일을위한 스키마에 있습니다. http://msdn.microsoft.com/en-us/library/646dk05y.aspx, intellisence 스키마에 있기 때문에 이것을 재사용하지 않는 것이 좋습니다. –

관련 문제