2013-08-14 1 views
3

Visual Studio (UI를 통해 프로젝트를 마우스 오른쪽 단추로 클릭하고 게시)를 통해 PublishProfile로 내 MVC 프로젝트를 게시하고 대상 폴더를 지우는 옵션을 선택합니다. 그러나 특정 폴더 "다운로드"를 지우고 싶지 않습니다.wpp.targets의 MsDeploySkipRules이 PublishProfiles와 함께 작동하지 않습니다.

나는이 작업을하기 위해 수많은 시간을 보냈지만 here 사람과 똑같은 코드가 있다고 생각하지만 다운로드 폴더는 계속 삭제됩니다.

또한 아래 예에서 대상 폴더 삭제를 선택 취소하면 작동하는 "favicon"ExcludeFromPackageFiles가 있습니다. 실제로 내 wpp 대상이 실제로 실행 중임을 보여줍니다.

다음

내 projectname.wpp.targets는

<?xml version="1.0" encoding="utf-8" ?> 
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 

    <!-- this doesnt work --> 
    <PropertyGroup> 
    <AfterAddIisSettingAndFileContentsToSourceManifest>AddCustomSkipRules</AfterAddIisSettingAndFileContentsToSourceManifest> 
    </PropertyGroup> 

    <PropertyGroup> 
    <UseMsDeployExe>true</UseMsDeployExe> 
    </PropertyGroup> 

    <Target Name="AddCustomSkipRules"> 
    <Message Text="Adding Custom Skip Rules" /> 
    <ItemGroup> 
     <MsDeploySkipRules Include="SkipErrorLogFolder1"> 
     <SkipAction>Delete</SkipAction> 
     <ObjectName>filePath</ObjectName> 
     <AbsolutePath>ErrorLog</AbsolutePath> 
     </MsDeploySkipRules> 
    </ItemGroup> 
    </Target> 

    <!-- this works! --> 
    <ItemGroup> 
    <ExcludeFromPackageFiles Include="favicon.ico"> 
     <FromTarget>ContactManager.Mvc.wpp.targets</FromTarget> 
    </ExcludeFromPackageFiles> 
    </ItemGroup> 

</Project> 

어떤 아이디어를 제출한다?

답변

5

(1) 예제의 AbsolutePath 값은 내 건너 뛰기 규칙 예제에서 복사/붙여 넣기됩니다. 이 값을 Downloads 폴더의 경로로 변경해야합니다.

<Target Name="AddCustomSkipRules"> 
    <Message Text="Adding Custom Skip Rules" /> 
    <ItemGroup> 
     <MsDeploySkipRules Include="SkipDownloadsFolder"> 
     <SkipAction>Delete</SkipAction> 
     <ObjectName>filePath</ObjectName> 
     <AbsolutePath>Downloads</AbsolutePath> 
     </MsDeploySkipRules> 
    </ItemGroup> 
    </Target> 

(2) 비주얼 스튜디오 내에서 게시 할 때 사용자 정의 규칙을 건너 뛸 사용할 수 없습니다. 명령 프롬프트에서 MSBuild를 사용하여 게시해야합니다. my question의 특성은 VS 2012 Update 3에서 명령 줄의 제한이 없었기 때문에 VS 내에서 관리되는 게시 프로필의 편리함과 사용자 지정 건너 뛰기 규칙 (명령 줄 필요)의 유용성을 결합한 것입니다. 들어 올려. 출력에서 명확하게 볼 수 있습니다 : 심지어 "동기화 - 동사"하지만,

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe My.Website.sln /p:Configuration=Release;DeployOnBuild=true;PublishProfile="Test Server - Web Deploy" 

내가 VS 2012 내에서 게시하려고하면, 나는 오류 다음 얻을 :

내 MSBuild를 명령은 다음과 같습니다

2>Start Web Deploy Publish the Application/package to http://my.website.example.com/MSDEPLOYAGENTSERVICE ... 
2>C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe 
    -source:manifest='C:\inetpub\wwwroot\My.Website\obj\Release\Package\My.Website.SourceManifest.xml' 
    -dest:auto,ComputerName='http://my.website.example.com/MSDEPLOYAGENTSERVICE',UserName='...',Password="...",IncludeAcls='False',AuthType='NTLM' 
    -verb:sync 
    -disableLink:AppPoolExtension 
    -disableLink:ContentExtension 
    -disableLink:CertificateExtension 
    -skip:skipaction='Delete',objectname='filePath',absolutepath='ErrorLog' 
    -skip:objectname='dirPath',absolutepath='obj\\Release\\Package\\PackageTmp\\App_Data$' 
    -skip:objectname='dirPath',absolutepath='MyWebsite/\\App_Data$' 
    -setParamFile:"C:\inetpub\wwwroot\My.Website\obj\Release\Package\My.Website.Publish.Parameters.xml" 
    -retryAttempts=2 
2>MSDEPLOY(0,0): Error : The verb must be specified by using the -verb argument. 
2>MSDEPLOY(0,0): Error count: 1. 
+1

여전히 Visual Studio 2013의 경우 누구에게 알리십니까? – Saustrup