Search code examples
visual-studio-2010msbuildmsdeploywebdeploy

Can MSBuild exclude "Hidden" Web Deploy parameters from the generated SetParameters.xml?


In my Parameters.xml file, I have a couple of parameters that use the Web Deploy "variable" syntax to refer to other parameters, like this one that refers to the IIS Web Application Name parameter:

<parameter name="MyParam"
           defaultValue="{IIS Web Application Name}/Web.config"
           tags="Hidden"/>

My problem is that VS automatically imports this parameter into my SetParameters.xml file when I build the deployment package in spite of it being tagged as hidden. When it is passed to msdeploy via setParamFile, Web Deploy literally interprets the value of the parameter as

{IIS Web Application Name}/Web.config

rather than substituting the IIS application name.

If I remove the parameter from the auto-generated SetParameters.xml file, the variable works as expected. Is there any way to prevent VS from including that parameter in the first place, either by name or by tag?


Solution

  • This was actually far easier than I thought, given the answer to my earlier question.

    I just needed to add a Hidden tag in the target that follows AddIisAndContentDeclareParametersItems. This apparently sets the tag in the source manifest prior to the package being built. It ends up looking something like this:

    <Target Name="DeclareCustomParameters" 
            AfterTargets="AddIisAndContentDeclareParametersItems">
      <ItemGroup>
        <MsDeployDeclareParameters Include="Foo">
          <!-- <snip> -->
          <!-- the following elements are the important ones: -->
          <Tags>Hidden</Tags>  
          <ExcludeFromSetParameter>True</ExcludeFromSetParameter>
        </MsDeployDeclareParameters>
      </ItemGroup>
    </Target>
    

    That was it!