设置MSBuild任务

时间:2015-06-05 12:39:16

标签: msbuild

在下面的简单MSBuild文件中,我想覆盖.sln或.csproj文件中定义的输出路径。在第13行中,您可以看到我为现有VS解决方案调用了MSBuild任务。通常,作为该解决方案一部分的项目具有存储输出的属性。使用我的脚本,我想覆盖它,以便我的构建自动化"使用与默认目录不同的目录。

<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>

所以实际的问题是:如何以一种输出(在这种情况下是xap文件)到另一个目录(除了xap文件之外的所有输出都很好)的方式调用MSBuild for sln )?

1 个答案:

答案 0 :(得分:0)

我会在这里发布我的完整xml,这样你就能理解这一切 项目的结构是这样的:

ul, menu, dir {
    -webkit-margin-before: 1em;
    -webkit-margin-after: 1em;
    -webkit-margin-start: 0px;
    -webkit-margin-end: 0px;
    -webkit-padding-start: 40px;
}

这是build_both_proj.xml

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

这是我使用的文件夹<?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> 中的msbuil.exe命令:

BuildFromXmlFldr

所以输出是在c:\path_to_msbuild\MSBuild.exe build_both_proj.xml /t:BuildAll 标记

中的Properties属性中确定的
Target