Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Conditional Content Based Upon Configuration

Tags:

msbuild

csproj

I've tried several times to use a similar technique as "conditional references" for conditional content.

Content entries in the Visual Studio Project file such as "web.config" I do not want included when I publish the website.

I've tried a few things like...

<Choose>

    <When Condition="$(Configuration) != 'Release'">
        <ItemGroup>
            <Content Include="web.config">
                <SubType>Designer</SubType>
                <CopyToOutputDirectory>Always</CopyToOutputDirectory>
                 </Content>
        </ItemGroup>
    </When>
    <Otherwise>
        <ItemGroup>
        </ItemGroup>
    </Otherwise>

</Choose>

But this doesn't work. Any ideas? Or have you encountered this before and solved it?

like image 452
tentux Avatar asked Nov 13 '11 23:11

tentux


2 Answers

I believe you can just add the Condition to the ItemGroup... Example:

    <ItemGroup Condition="'$(Configuration)' != 'Release'"> 
        <Content Include="web.config"> 
            <SubType>Designer</SubType> 
            <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
             </Content> 
    </ItemGroup> 

Note the ticks around '$(Configuration)' in the condition. Those are very necessary.

like image 177
Nick Nieslanik Avatar answered Oct 15 '22 16:10

Nick Nieslanik


I would like to extend the answer provided by Nick Nieslanik with some details just so others aren't stumped in the same way I was.

The solution works during build/publish, but Visual Studio 2010's interface may not reflect the changes made. Whether this is a defect or not, I am not sure, but it did confuse me and it may confuse others.

like image 26
tentux Avatar answered Oct 15 '22 15:10

tentux