2009-12-31 2 views
41

릴리스 빌드가 수행 될 때 웹 응용 프로그램을 자동으로 게시하려고합니다. _CopyWebApplication 대상을 사용하여이 작업을 수행하고 있습니다. .csproj 파일에 다음을 추가했습니다.Web.config 변환을 사용한 _CopyWebApplication

<!-- Automatically Publish in Release build. --> 
    <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" /> 
    <Target Name="AfterBuild"> 
    <RemoveDir Directories="$(ProjectDir)..\Output\MyWeb" ContinueOnError="true" /> 
    <MSBuild Projects="MyWeb.csproj" Properties="Configuration=Release;WebProjectOutputDir=$(ProjectDir)..\Output\MyWeb;OutDir=$(ProjectDir)bin\" Targets="ResolveReferences;_CopyWebApplication" /> 
    </Target> 

이 문제는 하나의 문제와 함께 작동합니다. 이 출력과 Visual Studio에서 게시 메뉴 항목을 사용할 때 생성되는 출력의 차이점은 MS.Build 메서드를 사용할 때 Web.config 파일에 Web.Release.config 변환이 적용되지 않는다는 것입니다. 대신 Web.config, Web.Release.config 및 Web.Debug.config가 모두 복사됩니다.

모든 아이디어는 높이 평가됩니다.

답변

71

나는 이것을 위해 벽을 머리에 대고 있었다. MSBuild 타겟을 하이킹 한 후에 나는 아주 "불투명 한"것을 보았습니다.

짧은 이야기 : 새로운 _WPPCopyWebApplication을 사용해보세요. 그것은 내 컴퓨터에서 작동합니다. 이전 _CopyWebApplication은 기존의 이유로 변형을 지원하지 않습니다.

msbuild /t:Rebuild /p:OutDir=..\publish\;Configuration=Release;UseWPP_CopyWebApplication=True;PipelineDependsOnBuild=False MvcApplication1\MvcApplication1.csproj 

# UseWPP_CopyWebApplication = true requires PipelineDependsOnBuild = false 

긴 이야기 :

VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets에서 보라를이 내가 할 것입니다. 너무 틀렸어. 코멘트는 라인 (70)에 _CopyWebApplication 찾기 :

원래 _CopyWebApplication 지금 레거시, 당신은 여전히 ​​사실로 설정 $ (UseWPP_CopyWebApplication)로 사용할 수 있습니다. 기본적으로 Microsoft.Web.Publish.targets에서 _WPPCopyWebApplication 대상을 사용하도록 변경됩니다. web.config 파일을 활용할 수 있습니다. [전체 설명]

어 오. UseWPP_CopyWebApplication의 기본값은 false (줄 27)이며 기존의 _CopyWebApplication을 손상시키지 않으려면 의미가 있습니다. 따라서 사실로 설정하면 VS 2010에 도입 된 새로운 WPP 항목을 실제로 사용할 수 있습니다.이 기능을 "숨겨진"대상을 호출하는 것보다 선호합니다.

+4

WTF Microsoft? 이 Jabe를 공유해 주셔서 감사합니다. – jjxtra

+0

나는 다른 프로젝트를 통해 참조 된 라이브러리를 복사하는 문제를 해결할 수있는 방법이 있습니까? 나는 msbuild ouput dir에 포함될 예정입니까? –

+0

WebDeploy에서 /p : WebPublishMethod = FileSystem을 사용하고 pubxml 파일을 사용하여이 작업을 시도했습니다. 나는 그것을 작동시킬 수 없었다. 이 솔루션은 내가 찾은 최고의 방법입니다. 조언 한마디 : OutDir 속성을 설정하지 않아도 작동하지 않습니다. 이미 프로젝트 속성에 정의되어 있어도 명령 줄에 포함시켜야합니다. –

관련 문제