- Use .rsp file to pass command line arguments to msbuild from a file (similar to the way .config files work)
- PropertyGroup contains properties. A property is a key-value pair. The value is a scalar. Properties are referenced using the $(PropertyName) syntax
- ItemGroup contains items. Use Items to store collections e.g., all files inside a directory. Items are referenced using the @(ItemName) syntax
- An Item can have metadata associated with it
- A Target contains one or more Tasks
- There are many ways to chain Targets. E.g.,: CallTarget, DependsOnTargets, BeforeTargets, AfterTargets
- Goto MSBuild Task Reference to see all tasks that come with MSBuild. Examples of some common tasks: Exec, Copy, Move, Message, MakeDir, RemoveDir
- Download MSBuildExtensionPack from codeplex for more tasks
- UsingTask allows you to import a MSBuild Task defined in a dll
- To zip files, use DNZip task from MSBuildExtensionPack
- Use the MSBuild task to build a csproj
- To get the name of the dll/exe built by a msbuild task use the TargetOutputs task parameter:
<MSBuild Projects="$(MyCsProj)" ToolsVersion="4.0" StopOnFirstFailure="true"> <Output TaskParameter="TargetOutputs" PropertyName="MyDll" /> </MSBuild>
- To create you own MSBuild task, implement the ITask interface. Subclass the Task class instead of inheriting from ITask directly
- To pass output of one task as input to another:
<Task1 > <Output TaskParameter="Version" PropertyName="Version"/> </Task1> <Task2 Version="$(Version)" />
In the C# code for Task1:
[Output] public string Version { get; private set; } - Use mstext.exe /testcontainer:myunittests.dll to run unit tests from command line
- To change assembly version use the AssemblyInfo task in MSBuildExtension Pack
<MSBuild.ExtensionPack.Framework.AssemblyInfo AssemblyInfoFiles="@(files)", AssemblyFileMajorVersion="1", AssemblyFileMinorVersion="2" />
- More useful tasks in MSBuildExtension Pack: MSBuildExtensionPack.Web.Iis7Website, MSBuildExtensionPack.FileSystem.Robocopy
-
Recent Posts
Categories
Archives
- February 2026
- January 2026
- December 2025
- April 2025
- March 2025
- January 2025
- November 2024
- October 2024
- August 2024
- June 2024
- May 2024
- April 2024
- March 2024
- February 2024
- January 2024
- December 2023
- November 2023
- October 2023
- September 2023
- August 2023
- July 2023
- June 2023
- May 2023
- April 2023
- March 2023
- February 2023
- January 2023
- December 2022
- November 2022
- October 2022
- September 2022
- August 2022
- July 2022
- June 2022
- May 2022
- April 2022
- March 2022
- February 2022
- January 2022
- December 2021
- November 2021
- September 2021
- August 2021
- July 2021
- June 2021
- May 2021
- April 2021
- March 2021
- February 2021
- December 2020
- November 2020
- October 2020
- September 2020
- August 2020
- July 2020
- June 2020
- May 2020
- April 2020
- March 2020
- February 2020
- January 2020
- December 2019
- November 2019
- October 2019
- September 2019
- August 2019
- June 2019
- May 2019
- April 2019
- March 2019
- February 2019
- January 2019
- December 2018
- November 2018
- October 2018
- September 2018
- August 2018
- September 2017
- June 2017
- May 2017
- January 2017
- November 2016
- October 2016
- September 2016
- August 2016
- July 2016
- May 2016
- April 2016
- February 2016
- December 2015
- October 2015
- September 2015
- August 2015
- June 2015
- May 2015
- April 2015
- March 2015
- December 2014
- November 2014
- October 2014
- April 2014
- March 2014
- February 2014
- January 2014
- December 2013
- June 2013
- May 2013
- April 2013
- March 2013
- February 2013
- January 2013
- November 2012
- October 2012
- September 2012
- August 2012
- June 2012
- April 2012
- January 2012
- December 2011
- October 2011
- September 2011
- August 2011
- July 2011
- May 2011
- March 2011
- January 2011
- August 2010
- April 2010
- February 2010