14
votes

Is there a way to set MSDeploy parameters in .csproj file itself of ASP.NET MVC project? Particularly a "skip" parameter, which should skip a "Temp" folder.

-skip:objectName=dirPath,absolutePath="\\temp"

.. or how can I pass this parameter into MSBuild.exe arguments list?

1
How your target is defined? You running msbuild.exe explicitly? - sll
MSBuild.exe is executed by TFS Build server with arguments similar to this: /p:DeployOnBuild=true;DeployTarget=MsDeployPublish;MSDeployPublishMethod=WMSVC;MsDeployServiceUrl=... - Grief Coder
Can you add an argument explicitly like msbuild.exe /p:absolutePath="\\temp" ? - sll
I don't think so, since absolutePath is a value of -skip parameter which should be passed to msdeploy.exe - Grief Coder
When I try this, I get "Unrecognized skip directive 'skipaction'." in the build. What am I missing? - Paul Smith

1 Answers

11
votes

Define <MsDeploySkipRules> in the project file. For example:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <OnBeforePackageUsingManifest>AddSkipRules</OnBeforePackageUsingManifest>
  </PropertyGroup>
  <Target Name="AddSkipRules">
    <ItemGroup>
      <MsDeploySkipRules Include="SkipTempDirOnDeploy">
        <SkipAction></SkipAction>
        <ObjectName>dirPath</ObjectName>
        <AbsolutePath>$(_Escaped_PackageTempDir)\\Temp$</AbsolutePath>
        <XPath></XPath>
      </MsDeploySkipRules>
    </ItemGroup>
  </Target>
</Project>