3

In the following simple MSBuild file I'd like to overwrite the output path that is defined in the .sln or .csproj file. In line 13 you can see that I call an MSBuild task for an existing VS solution. Usually, the projects that are part of that solution have a property where the output is stored. With my script I'd like to overwrite that so that my "build automation" uses a different directory than the default one.

<Project 
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
    DefaultTargets="Default">

    <PropertyGroup>
        <appname>Some App</appname>
        <version>2.9.1</version>
        <file_xap>Some.App.WP8_$(version).$([System.DateTime]::Now.ToString(`yyyyMMddHHmmss`)).xap</file_xap>
    </PropertyGroup>

    <Target Name="Default">

        <MSBuild Projects="C:\Users\User\Documents\Visual Studio 2013\Projects\SomeApp\SomeApp.sln" Properties="Configuration=Debug;Platform=Any CPU">
        </MSBuild>
        <Message Text="Output file: $(file_xap)"/>
    </Target>
</Project>

So the actual question is: How can I call MSBuild for that sln in a way that the output (the xap-file in that case) to another directory (having all the output apart from the xap-file is fine as well)?

4
  • Have you seen stackoverflow.com/questions/1895502/… ? Commented Jun 8, 2015 at 7:57
  • did you solve it ? Commented Jun 1, 2016 at 7:39
  • @MBH Sorry. Not yet. Commented Jun 2, 2016 at 5:50
  • I found it i will post the answer soon Commented Jun 2, 2016 at 6:45

1 Answer 1

1

I will post my full xml here so you can understand it all the structure of the project is like this:

MyProject----MyProject.sln
         ----MyProject.Server---    
                        ----MyProject.Server.proj
                        ----Other server project classes and stuff
         ----MyProject.Client---
                        ----MyProject.Client.proj
                        ----Client project related stuff
         ----BuildFromXmlFldr---
                                ----build_both_proj.xml <---This is the example file i posted here

Here is the build_both_proj.xml

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
        ToolsVersion="4.0"
        DefaultTargets="Build">
    <PropertyGroup>
        <SolutionDir>..\</SolutionDir>

        <ServerProjectFile>..\MyProject.Server\MyProject.Server.csproj</ServerProjectFile>
        <ClientProjectFile>..\MyProject.Client\MyProject.Client.csproj</ClientProjectFile>

        <ServerProjectName>MyProject.Server</ServerProjectName>
        <ClientProjectName>MyProject.Client</ClientProjectName>

        <ServerOutput>C:\_Publish\Server\</ServerOutput>
        <ClientOutput>C:\_Publish\Client\</ClientOutput>

        <Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration>
        <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    </PropertyGroup>


    <Target Name="BuildServer">
        <MSBuild Projects="$(ServerProjectFile)" 
        Targets="Build"
        Properties="Configuration=$(Configuration);Platform=$(Platform);OutputPath=$(ServerOutput);">
        </MSBuild>

    </Target>

    <Target Name="BuildClient">
        <MSBuild Projects="$(ClientProjectFile)" 
        Targets="Build"
        Properties="Configuration=$(Configuration);Platform=$(Platform);OutputPath=$(ClientOutput);"
        StopOnFirstFailure="true">
        </MSBuild>
    </Target>




    <PropertyGroup>
        <BuildAllDependsOn>BuildServer;BuildClient</BuildAllDependsOn>
    </PropertyGroup>

    <Target Name="BuildAll" DependsOnTargets="$(BuildAllDependsOn)"/>
</Project>

This is the msbuild.exe command inside the folder BuildFromXmlFldr that I used:

c:\path_to_msbuild\MSBuild.exe build_both_proj.xml /t:BuildAll

so the output is determined in the Properties attribute in the Target tag

Properties="Configuration=$(Configuration);Platform=$(Platform);OutputPath=$(ServerOutput);"
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.