2011-01-20 5 views
4

웹 개발 대상 파일을 작성 중이며 프로그래밍 방식으로 "_PublishedWebsites"아래에 나타나는 디렉터리의 이름을 확인하려고합니다.MSBuild - 솔루션의 _PublishedWebsites 결정

나는 현재이 사용할 필요가

:

$ (BinariesRoot를) \ % (ConfigurationToBuild.FlavorToBuild) \ _ PublishedWebsites MyWebApplication

어떤 아이디어 \?

+0

해결 방법을 찾으셨습니까? – jcolebrand

+0

예. TFS 2010으로 업그레이드하고 MSBuild가 아닌 C#으로 빌드를 사용자 정의하십시오. – Danny

+0

아, 우리는 TFS2010을 시도했지만 상자에 필요한 모든 것을 제공하지 않았기 때문에 FogBugz, Kiln으로 이동했습니다. CI를위한 일부 CCNet 프로젝트. 우리가 SharePoint 개발자 였고 우리가 TFS에 필요한 사용자 정의 부분을 채찍질 할 수 있다면 우리는 그 중 하나를 사용할 수 있었을 것입니다 ... – jcolebrand

답변

11

가 .NET 4.0의 새로운 웹 게시 파이프 라인 (WPP)의 출력 위치를 제어하는 ​​방법이 있습니다 (I 게시 한 개 이상의 웹 사이트와 솔루션이 사용하고 있지 않다).

먼저 CopyWebApplication 대상을 실행하는 동안 WPP로 옵트 인해야합니다.

<PropertyGroup> 
    <UseWPP_CopyWebApplication>True</UseWPP_CopyWebApplication> 
    <PipelineDependsOnBuild>False</PipelineDependsOnBuild> 
</PropertyGroup> 

명령 줄-변형은 다음과 같습니다 :

/p:UseWPP_CopyWebApplication=True /p:PipelineDependsOnBuild=False 

다음, 새로운 MSBuild를 대상으로이 같은 디렉토리에 파일을 생성 명령 줄에서 또는 MSBuild에서 프로젝트 파일에 하나, 다음의 MSBuild 속성을 설정 프로젝트 이름을 "ProjectName.wpp.targets"로 지정하십시오. 여기서 "ProjectName"은 프로젝트의 파일 이름이며 확장자를 뺀 것입니다. 즉, "MyWebsite.csproj"가 있으면 "MyWebsite.wpp.targets"를 만들어야합니다. 프로젝트에 대상 파일을 추가하는 것이 도움이된다는 것을 알았습니다. 필수는 아니지만 쉽게 편집 할 수 있습니다.

새 대상 파일에서 WebProjectOutputDir 속성을 재정의해야합니다. CopyWebApplication가 호출 될 경우에만이 작업을 수행 - 즉, "OUTDIR는"멀리 "OutputPath"에서 리디렉션되는 경우 :

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
     <WebProjectOutputDir Condition="'$(OutDir)' != '$(OutputPath)'">$(OutDir)Websites\MyCustomFolderName</WebProjectOutputDir> 
    </PropertyGroup> 
</Project> 

그것을 있다고 - 당신이 가서 잘되어야합니다. OutDir 속성을 설정하여 로컬에서 테스트 할 수 있습니다. 후행 백 슬래시를 잊지 마세요.

msbuild MyWebsite.csproj /p:OutDir=C:\Development\WebOutputTest\