웹 개발 대상 파일을 작성 중이며 프로그래밍 방식으로 "_PublishedWebsites"아래에 나타나는 디렉터리의 이름을 확인하려고합니다.MSBuild - 솔루션의 _PublishedWebsites 결정
나는 현재이 사용할 필요가:
$ (BinariesRoot를) \ % (ConfigurationToBuild.FlavorToBuild) \ _ PublishedWebsites MyWebApplication
어떤 아이디어 \?
웹 개발 대상 파일을 작성 중이며 프로그래밍 방식으로 "_PublishedWebsites"아래에 나타나는 디렉터리의 이름을 확인하려고합니다.MSBuild - 솔루션의 _PublishedWebsites 결정
나는 현재이 사용할 필요가:
$ (BinariesRoot를) \ % (ConfigurationToBuild.FlavorToBuild) \ _ PublishedWebsites MyWebApplication
어떤 아이디어 \?
가 .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\
해결 방법을 찾으셨습니까? – jcolebrand
예. TFS 2010으로 업그레이드하고 MSBuild가 아닌 C#으로 빌드를 사용자 정의하십시오. – Danny
아, 우리는 TFS2010을 시도했지만 상자에 필요한 모든 것을 제공하지 않았기 때문에 FogBugz, Kiln으로 이동했습니다. CI를위한 일부 CCNet 프로젝트. 우리가 SharePoint 개발자 였고 우리가 TFS에 필요한 사용자 정의 부분을 채찍질 할 수 있다면 우리는 그 중 하나를 사용할 수 있었을 것입니다 ... – jcolebrand